diff --git "a/VLSI26/submitted_notebooks/16\342\200\221bit_vedic_multiplier_MAC_with_security_key/16\342\200\221bit_vedic_multiplier_MAC_with_security_key.ipynb" "b/VLSI26/submitted_notebooks/16\342\200\221bit_vedic_multiplier_MAC_with_security_key/16\342\200\221bit_vedic_multiplier_MAC_with_security_key.ipynb" new file mode 100644 index 000000000..d9b90d70b --- /dev/null +++ "b/VLSI26/submitted_notebooks/16\342\200\221bit_vedic_multiplier_MAC_with_security_key/16\342\200\221bit_vedic_multiplier_MAC_with_security_key.ipynb" @@ -0,0 +1,59988 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "2J6p8eeoeY0h" + }, + "source": [ + "# IEEE SSCS Code‑a‑Chip VLSI'26 Submission\n", + "## 16‑bit Vedic Multiplier MAC with Security Key\n", + "\n", + "**Author:** Kamalesh E \n", + "**License:** Apache 2.0\n", + "\n", + "---\n", + "## Abstract\n", + "This notebook presents a complete open‑source ASIC design flow for a 16‑bit multiplier‑accumulator (MAC) based on the Vedic mathematics algorithm *Urdhva Tiryagbhyam*. The design includes a hardware security key feature and is implemented using **OpenLane 2** with the **SkyWater 130 nm** PDK.\n", + "\n", + "The notebook covers:\n", + "1. **RTL design** and functional simulation with Icarus Verilog.\n", + "2. **Visual explanation** of the Vedic multiplication algorithm.\n", + "3. **Physical implementation** (synthesis, place & route, layout generation).\n", + "4. **Timing analysis**.\n", + "5. **DRC/LVS verification**.\n", + "\n", + "All steps are **fully reproducible** in Google Colab or any Linux environment with Nix." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Vm8mFdFkeY0l" + }, + "source": [ + "## 1. Environment Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aAtiBJi-eY0m", + "outputId": "4e9956cf-bf0c-48c0-e2cd-2264401cb691" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "W: Skipping acquire of configured file 'main/source/Sources' as repository 'https://r2u.stat.illinois.edu/ubuntu jammy InRelease' does not seem to provide it (sources.list entry misspelt?)\n", + "System dependencies ready.\n" + ] + } + ], + "source": [ + "# Install system dependencies (Colab only)\n", + "import os, sys, subprocess, shutil\n", + "\n", + "if \"google.colab\" in sys.modules:\n", + " !sudo apt-get update -qq\n", + " !sudo apt-get install -y -qq iverilog python3-tk\n", + " if shutil.which(\"nix-env\") is None:\n", + " !curl -L https://nixos.org/nix/install | bash -s -- --daemon --yes\n", + " !echo \"extra-experimental-features = nix-command flakes\" >> /etc/nix/nix.conf\n", + " !killall nix-daemon\n", + " os.environ[\"PATH\"] = \"/nix/var/nix/profiles/default/bin:\" + os.environ[\"PATH\"]\n", + "else:\n", + " print(\"Running locally – ensure Nix is installed.\")\n", + "\n", + "print(\"System dependencies ready.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 293 + }, + "id": "m_lhVPtqeY0n", + "outputId": "9876ad0a-e4ad-438e-b228-08783fc08c16" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Downloading OpenLane…

" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\n", + " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\n", + "100 9492k 0 9492k 0 0 9.7M 0 --:--:-- --:--:-- --:--:-- 21.6M\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Installing binary dependencies (Nix)…

" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Installing Python dependencies…

" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "

Downloading Sky130 PDK…

" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [], + "text/html": [ + "
\n"
+            ]
+          },
+          "metadata": {}
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": [
+              "Version bdc9412b3e468c102d01b7cf6337be06ec6e9c9a enabled for the sky130 PDK.\n"
+            ],
+            "text/html": [
+              "
Version bdc9412b3e468c102d01b7cf6337be06ec6e9c9a enabled for the sky130 PDK.\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "OpenLane 2.1.11 installed.\n" + ] + } + ], + "source": [ + "# Install OpenLane 2 and Sky130 PDK\n", + "import IPython.display as display\n", + "\n", + "openlane_version = \"version-2.1\"\n", + "pdk_root = os.path.expanduser(\"~/.volare\")\n", + "openlane_ipynb_path = os.path.join(os.getcwd(), \"openlane_ipynb\")\n", + "\n", + "display.display(display.HTML(\"

Downloading OpenLane…

\"))\n", + "!rm -rf {openlane_ipynb_path}\n", + "!mkdir -p {openlane_ipynb_path}\n", + "!curl -L \"https://github.com/efabless/openlane2/tarball/{openlane_version}\" | tar -xzC {openlane_ipynb_path} --strip-components 1\n", + "\n", + "display.display(display.HTML(\"

Installing binary dependencies (Nix)…

\"))\n", + "try:\n", + " subprocess.run([\"nix\", \"profile\", \"install\", \".#colab-env\", \"--accept-flake-config\"],\n", + " cwd=openlane_ipynb_path, check=True)\n", + "except:\n", + " display.display(display.HTML('

Nix install failed – retrying…

'))\n", + " subprocess.run([\"nix\", \"profile\", \"install\", \".#colab-env\", \"--accept-flake-config\"],\n", + " cwd=openlane_ipynb_path, check=True)\n", + "\n", + "display.display(display.HTML(\"

Installing Python dependencies…

\"))\n", + "subprocess.run([\"pip3\", \"install\", \"-q\", \".\"], cwd=openlane_ipynb_path, check=True)\n", + "\n", + "display.display(display.HTML(\"

Downloading Sky130 PDK…

\"))\n", + "import volare\n", + "volare.enable(volare.get_volare_home(pdk_root), \"sky130\",\n", + " open(os.path.join(openlane_ipynb_path, \"openlane\", \"open_pdks_rev\")).read().strip())\n", + "\n", + "sys.path.insert(0, openlane_ipynb_path)\n", + "import openlane\n", + "print(f\"OpenLane {openlane.__version__} installed.\")\n", + "\n", + "import logging\n", + "logging.getLogger().handlers.clear()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Tt5sSnJpeY0o" + }, + "source": [ + "## 2. Vedic Algorithm Visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 177 + }, + "id": "QF6F0FzneY0p", + "outputId": "42f989f1-be9e-4f7c-cdb4-c2c735898f8a" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAABjUAAAFzCAYAAAB2JYv2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAwu5JREFUeJzs3XdUVMfjNvBn6VWqKDbAjl1R7IAoRYkdFSvWxKiJsRuNLcYSTdRE/aqxa6yoWFBsCFas0cTYC9iiAiqigNLm/YOX+2PZBRYElsXncw7nsHPn3pk7uzuzd+bOXJkQQoCIiIiIiIiIiIiIiKiY01J3BoiIiIiIiIiIiIiIiFTBQQ0iIiIiIiIiIiIiItIIHNQgIiIiIiIiIiIiIiKNwEENIiIiIiIiIiIiIiLSCBzUICIiIiIiIiIiIiIijcBBDSIiIiIiIiIiIiIi0ggc1CAiIiIiIiIiIiIiIo3AQQ0iIiIiIiIiIiIiItIIHNQgIiIiIiIiIiIiIiKNwEENIiIiIjVzc3ODTCaDTCbDwIEDpfDIyEgpXCaTISwsTG15LAphYWFy5xsZGanuLBWo/J7fhg0b5PYjyq/s6pqi2j+rnL4TAwcOlMLd3Nw+Oa3CYG9vL+Vx5syZ6s4OERER0WeDgxpERET0WcvaqbZhwwaFOJk719ipnLOsAzGq/hGp4u+//8a8efPQvn171KhRA2ZmZtDX10fFihXRs2dPnDp1qkDSefbsGVasWAE/Pz/UrVsXpUuXhq6uLkqXLo127dph06ZNEELk6ZiZO8BlMhn09PTw4sULhXgpKSmoWLFikX9HCnrAQtNxwIKIiIio+NJRdwaIiIiIiACgSpUqWLhwofTa0tJSjbmh4mjSpEk4cuSIQvjTp08REBCAgIAA/Pzzz5g4ceInpbN582Z8//33CuExMTEICQlBSEgIdu3ahcDAQGhra+crjeTkZKxcuVKhw3zPnj14+vRpvo5Z2L7++mt88cUXAIA6deoUalp+fn5SGhUrVizUtPJr6tSpePv2LQCgRYsWas4NERER0eeDgxpEREREhSQ1NRUfP36EkZGRurNSZCwtLeUGJgDg8uXL2LFjh/R6+PDhqFKlisK+FStWxPjx4/Oc5udYzp+72rVro127drCyssKlS5dw4MABaduUKVPQuXNn1KhR45PTKVu2LDp06IDKlSsjMjISf/75Jz58+AAAOHDgANavX4+hQ4fm+/irVq3ClClToKenJ4X9/vvvn5zvwtKrV68iS8vb2xve3t5Fll5+DBs2TN1ZICIiIvoscfkpIiIiok+Qdd33x48fo3///ihTpgx0dXVx9OhRKW5gYCCcnZ1haGiIMmXKYMiQIYiKispTeoGBgWjevDmMjIxgYWGBHj164MmTJ9L2tWvXSvkxNjZGfHy83P6xsbEwMDCQ4mzZsgUAEBERge+++w6tW7dGxYoVYWxsDH19fZQvXx4dO3aU6zTOSalSpTB+/Hi5v6wdk7169VKIA+Rtff2s5bxixQpoa2tLcTKXe4YmTZpI27/++msA6Uv9TJs2DR06dECVKlVgbm4OXV1dWFlZoXXr1li6dCmSk5OVnuuaNWtQt25dGBgYSAMy8fHxKi9bI4TA8uXLUadOHRgYGKB8+fIYO3Ys3r17l2MZJycnY8GCBahZsyb09fVRoUIFjB8/Hh8/fpTi+Pv7S3lQdgf5wYMHpe06Ojr477//pPdgyJAhaNSoEWxtbaGvrw8jIyNUrVoVgwYNwvXr1xWOlfW9uXv3Lrp27QozMzNYWlqiT58+ePnyJQAgJCQErVu3hpGREUqXLo0hQ4bgzZs3OZ5vZi1btsSpU6fw77//YsmSJZg2bRr279+P6dOnS3FSU1Ol9z81NRUtW7aU8te0aVOkpqZKcefOnSttMzExwZ07dwAAlSpVwubNm/HkyROsXbsWU6dOxerVq3Ho0CG5/AQHB6uc98y0tNIvw168eIGdO3dK4X/99RfOnj0LADnOAMlpqai8PoNl5syZkMlkOHnypBS2ceNGpd/FvDz/Z/PmzXBycoKhoSFsbGwwePBg6XOgityeqfHq1SvMnj0bzZo1g4WFhVRfeXl5yQ2ivn79GhMnTkTbtm1hb28PU1NT6OnpoUyZMvDw8MDmzZvllhLLSPfRo0dS2KxZs5SWaW7f9StXrmDAgAFwcHCAgYEBTExMUKdOHYwbN07pbJys5Xvv3j307t0b1tbWMDAwQKNGjbBv3z6Vy5CIiIioxBJEREREn7HQ0FABQPpbv369Qhx/f3+5ONltq1atmihbtqxc3MDAQCGEECtWrJALz/hzcHAQtWrVkl77+/tLx46IiJCL6+XlpfQY1apVE4mJiUIIIeLi4oSRkZG0bevWrXL5Xbt2rbTNzMxMJCQkCCGEOHDggNJjZ/6bNWtWvsp4/fr1cscJDQ1V6b2IiIjIUzn7+PhIr3v06CF37IcPH8rFv3jxohBCiHfv3uV63u3atRMpKSlyx5s8ebLSuM7OzqJMmTLS6xkzZmR7fpnzm/mvSZMm0vuprPyy+xz0799f2ufSpUty227cuCGX/wEDBkjbOnToIIWPGzcux7LQ09MTx44dkztW5vfGwcFBWFhYKOxXo0YNsWnTJqGlpaWwzcXFJfsPj4quX78ud8xffvlF2hYRESHMzMykbfPmzRNCCPHPP/8IPT09KXz16tUqpWVlZSXt88UXX6icRzs7O7nPlImJifSZyZD5fenSpUu29Y6rq6vSOkMIxc9LbvvNmDEj1+9Axncxu3Sz1lXu7u5Kj1O5cmURFRUl7afqd97V1VXuPC5evKhQB2T+69y5sxQ362dD2d+gQYOUppvdn7L3NPN3XQghFi9erPTznvFnZmamUBdmLt969eoJU1NThf1kMpk4fvy4ICIiIvqccfkpIiIiogJy7949AEC3bt1Qv359PHr0CGZmZnj69CnGjBkjxTM1NcWQIUOgpaWFdevWISIiQqXjHzlyBE2aNIGXlxdCQ0OlO7rv3buHvXv3ws/PD6ampvD19cWmTZsAAFu3bkXv3r2lY2zdulX638/PD4aGhgAAHR0dNGjQAI0bN0bp0qVRqlQpxMfH4+zZswgNDQUAzJ49G0OGDEH58uU/oZQ+XXbl/M033+DgwYMAgH379iEmJgbW1tYAgICAAGn/2rVro0mTJgAAmUyGypUro1mzZihfvjwsLCyQnJyM27dvIyAgACkpKTh+/Dh2796Nnj17AgAuXbqEn3/+WTqejY0N/P398e7dO6xbtw5JSUkqncfBgwfRuXNn1K9fH8HBwbh06ZJ0/AULFsjNPsjsyJEj6Nq1K2rVqoUtW7ZId9Fv2bIF8+fPR7ly5dC4cWM0a9YM58+fB5A+q2TRokUAgKSkJLm7vQcNGiT9b2xsDFdXV9StWxeWlpYwNDTEq1evcPDgQdy6dQtJSUn49ttvcfPmTaV5i4iIgJWVFSZOnIiHDx9i165dAIA7d+5gwIABKFu2LAYOHIhLly4hJCQEAHDq1CmcP38ezZo1U6nclLl9+7bca2dnZ+l/e3t7rFixAn369AGQPjPB29sbgwcPlt6r7t27q7SM1IsXL6RnKGRNJy/MzMzg7++P5cuX4+LFizh//jwqV64szTBwdXVF/fr1sXfv3nwdPy88PT1hYmKCFStW4OHDhwCAxo0byy01ldfn25w4cQJt2rRB69atcfbsWem9fvjwISZNmoR169blO7/v3r1Dp06d5B6y7u7ujpYtWyIuLg5nzpyRi6+lpQVHR0c4OzujbNmyMDc3x4cPH3D16lUcOHAAQgisX78ew4cPh7Ozs/Qsj7lz50qziDw8PODp6alyHk+dOoWxY8dKM0AqVaqE3r174/3791i/fj0SEhLw9u1bdO/eHffv34eFhYXCMf755x9YWFhgzJgxSExMxOrVq5GamgohBBYuXIi2bdvmp/iIiIiISgQOahAREREVoCVLlmD06NFyYfPnz5fW4QfSl5DK6JDq3r07WrZsqdKxnZ2dcebMGejq6iI5ORkVKlSQlq+6dOkS/Pz8AACDBw+WBjWOHDmC169fw9LSEi9evEBYWJh0vMGDB0v/Z6xff/fuXVy9ehXR0dHQ1dVFhw4dcOHCBSQkJCAlJQUnTpxA//79814wBUxZOQshUL16ddy9exdJSUnYtGkTxo4dCwByS/xkPm9jY2M8ePAAUVFROH/+PJ49e4aEhAQ0atQI169fx7///gsgvRwzBjXWrl0rdVZqaWnhxIkTqF27NgCgadOmcoMEORk2bBj++OMPAMAPP/yAhg0b4saNGwCA1atXZzuo8d1332Hx4sUAgB49eqBBgwYAgLS0NFy5cgXlypUDAHzzzTfSoMbmzZsxf/586Onp4ejRo1LHvJWVFTp16iQde9asWUhLS8Ply5dx69YtxMbGokyZMmjfvj1u3boFALh16xaePHmS7cOb9+3bJ32my5cvLy1tBaQ/h6Jx48Z49+4drKyspKW9Ll26lO9BjRcvXsg9GDyjMz2z3r17Izg4GJs3b8bHjx/RunVrvH//HgBQoUIFrF69Otd0UlJS8OWXXyIlJQVA+mDW8OHD85VnIP39+d///gchBH7//XfUrFlTWkLs22+/xT///JPvY+dFixYt0KJFCwQFBUmDGrVr187X820yeHp64vDhw5DJZBBCwNvbW1oSbMuWLVi2bFm+n4GzYcMGuQGNOXPmYMqUKXJxMs4DAGrVqoWbN2/i8ePHuHTpEl68eAFdXV20bt0aV65cwbNnzwCkf8ednZ2lunDZsmXSoEaLFi3yVB6LFi2S6ghTU1NcunQJNjY2AAAfHx906NABQPrSWBs3bsR3332ncAyZTIaQkBA0bNgQAGBgYIAlS5YAgDQASkRERPS54qAGERERUQGxsLDAyJEjFcIvX74s/V+mTBm5O2xbtGgBBwcHlWZrDB06FLq6ugAAXV1dODg4SIMamZ9L4OLigipVquDBgwdITk7G7t27MWzYMOzcuVN6nkDt2rXl7jKPjIxE3759ce7cuRzzoGwd+KKWXTnLZDKMGjUK3377LYD02Qljx45FREQErly5AiC93Pr16yftk5iYiBEjRmDTpk1IS0vLNs3M5535/XRycpIGNACgX79+GDZsmNTxnZPMg0O6urro2bMnZsyYIaX38uVLlClTRmG/ESNGSP9nfRh25s9Bjx49MG7cOLx48QIxMTEIDAxEr1695Gat9O3bV+4h1ceOHcPQoUPx+PHjHPP+9OlTpYMa9vb2coN0dnZ20qCGg4MDGjduDCC9o9fGxkbqUM7LczUyu3v3Ljp06CB9f2rVqiU3gJXZ8uXLce7cOTx48EAa0NDS0sKff/6p9E75zN69e4devXpJz9AwNTXF/v37Ubp06XzlG0h/77y9vREcHIxdu3bB3NwcQHqZde7cucgGNQpDv379pGdPyGQy9O3bVxrUSEpKwvXr19G0adN8HTvzTAxTU1NMmjRJIU7lypWl/1+9egV/f39pFld2CrJuCw8Pl/739vaWBjQAoH379ihdujSio6OluMoGNZo3by4NaADy3/X8fl+IiIiISgo+KJyIiIg+axmDBBkyz6jIkJiYmG38zKpUqQIdHcV7RmJjY6X/M3duZVDWca2Mvb293Gt9fX3p/8wd8lkf4pux5FTmpaeyzibo0qVLrgMaAOQeRq0u2ZUzkP6QX1NTUwDpMwrOnj0r18nt4+Mj9x58//332LBhQ44DGoD8eWd+P8uWLSsXT0dHR1ryKjdZPwtZPweZ08ks8+cg82cAkP8c6Orqys0kWLNmjcLSU5lnrfz333/o0qVLrgMaQPafg4xZIhkyD5hk3Zb5Pcyt/JUJCwtDs2bN8ODBAwDpSyaFhYVlW/6mpqbw9/eXC6tXrx5cXFxyTOfJkydo1aqVNKBRunRphISE5LtTPrOMAbjk5GSpk3vkyJE5PiQ8K5HpIddA8fiO5vezrYrXr19L/1esWDHXshoyZEiuAxpAwZZb5jwqq98zh2U3QJFTfZ/1PSciIiL63HBQg4iIiD5rWe+0VjZjIvNSJjndmW1sbKw0POMObADSzIrMXr58mVs2ASgOqGTcCa2Mv78/tLTSf+qdOnUKZ86cwYULFwCkdyZnnq1w584d/P3339LrPn364OnTp0hLS4MQ4pPuRi8M2ZUzkN5xnXlAZ82aNXIzE7IO5mQ8wwAA6tati3///RfJyckQQqBHjx5K08jp/UxJSUFMTIwqp6Gwb9bPQeZ0Msv8OcjpMwAAX331lRQ/JCQEq1atkpaeatiwIerXry/FPXDgABISEqTXv/76K2JjYyGEkJbFyk1Og37ZDUTlx4YNG+Dp6Sl1CHfs2BFhYWE5flbv3LmD+fPny4Vdu3YNv/32W7b7XL58GU2bNpVmTVSvXh3h4eHSM1k+lZeXl9wd+EZGRio92yPjuw3ID7oC//fMGXXK72dbFZmf7/HkyRNp9pky8fHxCAoKkl63bdsWDx48QEpKCoQQBfY+5pRHZfV75rDsZgnlpb4nIiIi+txwUIOIiIg+a1WrVpXrgNq8eTOePHkivT58+LDcckP5uTs7Y8kdIL0zK+OhuQBw7tw5lR8UnhcVK1ZEu3btAKTfBT9gwABpm4+Pj9ydwq9evZLb19fXF+XLl4dMJkNYWJh0B7mmGDVqlNQBuG3bNmnpqTJlykhr2WfIfO5t2rRB7dq1oaOjg+joaLnnj2SW+f28fPky7t+/L73+888/VVp6Ckj/rGVITk6Wm1FSvnx5lWfw5KRs2bLS4IwQQu7ZE5lnaQCKn4NBgwbBzMwMALJd0qmoCSEwdepUDBo0SHoexzfffIO9e/fmONiVlJSE3r17S4M2jo6O0rbJkycrXeopMDAQrq6ueP78OQCgdevWCA8PR5UqVQrsfGQymTRbA0hftim3pbAA+UGBq1evSg88f/bsGTZu3JivvGTuRM88uJUff/75pzSbQAiBLVu2SNv09PRQt27dfB+7VatW0v/v3r3DwoULFeI8evQIAPD27Vu5QQ8fHx9UrlwZ2trauHPnTo5LfH1KebRo0UL6//Dhw3KDPMHBwXJ1aua4RERERKQaPlODiIiIPmtaWloYPnw45s6dCwB4/vw5atasiXr16iEhIUF6UHSGzM8zUFXfvn0xc+ZMaXmTrl27YujQoZDJZFi3bt2nn0Q2Bg0aJK1jn3ngJOtshapVq0JLS0taAmj06NG4du0aXr16hfXr1xda/gpL9erV4enpiSNHjsgtKdO/f3+F2QI1atSQ3uPVq1dDS0sLRkZG2Lx5c7aDOUOGDMEff/wBIQRSU1Ph4uKCAQMGIC4uDmvXrlU5n6tXr0Z0dDTq1auH4OBgudkQw4YNy8sp5+ibb76Rlh7LWF5NX18fffr0kYuX9fkcPj4+aN++Pf755x/s2rWrwPLzKb799lssW7ZMel27dm1UqlQJixYtkotXp04deHt7S6+nTp2Kq1evAkgf6Dl9+jSGDx+OXbt24ePHj+jduzcuX74MQ0NDAEBAQAD8/Pyk74SZmRm8vLwUvq9mZmaf/F4NHDhQWppL1UHTJk2aIDAwEABw//59NGrUCI6OjggNDVUYnFJV+fLlpf8PHjyIyZMnw9raGtbW1nKzn1Rx9OhRtG3bFi4uLjhz5ozcQG6fPn3y/ZBwIL285syZI812+P777xESEoLmzZsjISEB58+fh7W1Nfbu3QsbGxuYm5tLy1399NNPiIqKQkpKCtatW5fjklPly5eXBiw3bNgAQ0NDmJqaokqVKujatWuOeRwzZgz27dsHIQTevXuHJk2aoE+fPnj//r3cZ8jS0lJhSTQiIiIiUoEgIiIi+sx9+PBBeHp6CgA5/s2YMUNhX39/f2m7q6trtmksW7ZM6THLlSsnqlWrJr329/eX9omIiJCLGxoaKndMV1dXpftlPi8LCwu5Y5QpU0YkJycrxB0+fLjS/LVt21aUL18+xzLIzfr163M8jwyhoaFy8SIiIqRtqpZzhqCgIIVzuXHjhkK8bdu2KT1vW1tb4eHhkW2akydPVrpfo0aNRJkyZaTXs2bNyvb83NzclB7DyclJJCQkZFt+WWXetn79eqXl0bhxY7l4PXr0UIiTlJQk6tatqzRPmcs/63uY03uT+TOadZudnV2eP1eZj5fTX+bvw7Fjx4RMJpO27d+/XwghRHR0tNx7NWLECGmfGTNmqJSOnZ2dSvnOer7du3fPNX7WPGT28uVLYWVlpZAfLS0t4eXlle1+OdUZ+/btU3qOtWvXznX/rHWVj4+P0mPZ29uLly9fSvvl9zt/8eJFufcu61/nzp2luPPnz1cap06dOsLJySnb8vjtt9+U7ufj4yPFyekzvHjxYqGlpZVtHs3MzPJUp+dWDxARERF9Trj8FBEREX329PX1ERwcjM2bN6N9+/YoW7YsdHV1YWBgAAcHB/Tt2xenT5/GzJkz853GyJEjsWvXLjg5OUFfXx/W1tbo378/Lly4oPAA5YKir6+P3r17y4X169dP6bMNli5dih9//BF2dnbQ1dVFpUqVMGHCBBw4cKBAn4VQVDp06ICqVatKr5s2bYpatWopxPPz88POnTtRv3596OrqwsrKCr169cL58+dzfF/mzZuHP/74A7Vr14aenh5sbW0xatQohISEIC4uToqX07MD1qxZg0WLFsHR0RH6+vqwtbXF6NGjceLECWnGQEHJvMQRoLj0FJC+3M6JEycwcOBAWFlZQV9fH3Xq1MEff/zxSZ99dXr16hX8/f2lpZAGDhyIjh07AgCsra2xZs0aKe7//vc/HDhwQC35zCsbGxucPHkS7du3h4mJCYyNjeHu7o6wsDD4+fnl65idOnXCsmXL4OjoKPeA9/wYP348tm3bBicnJxgYGMDKygr+/v44d+6cwkPE86NJkya4ceMGZs2ahSZNmqBUqVLQ0dGBjY0N3N3d5cpg0qRJWL58OapXrw5dXV2ULVsWw4YNw8mTJ2FiYpJtGiNHjsTMmTNRuXLlfNWB3333HS5cuID+/fvDzs4Oenp6MDQ0hKOjI8aMGYPr16/Dzc0tP6dPRERE9NmTiYxf+EREREREJYi3tzeOHDkCAFi5ciW++uqrAjt2YmKi0oGHoKAgqdMcAM6ePVss1sw/f/48mjdvDiB9WZ1Hjx5BW1tbzbmikiIyMhIODg7S69DQUHbYExEREVGh0bzb7oiIiIiIsnH79m08e/YM58+fl54nYm5ujr59+xZoOlOmTMG1a9fQsWNHODg4ICUlBZcvX8b//vc/KU7jxo2lgQR1+PDhA86fP483b95gzpw5UvjXX3/NAQ0iIiIiItJYHNQgIiIiohJj/vz52Lhxo1zYnDlzclxmJj+EEAgLC0NYWJjS7VWrVkVAQABkMlmBppsXL168QJs2beTCKleujNGjR6spR0RERERERJ+OgxpEREREVOLo6+ujatWqGDNmDIYMGVLgx+/SpQtevnyJCxcuIDo6Gh8+fIC5uTnq1KmDrl27YujQoTAyMirwdPOrdOnScHd3x88//1zgAzxERERERERFic/UICIiIiIiIiIiIiIijaCl7gwQERERERERERERERGpgoMaRERERERERERERESkETioQUREREREREREREREGoGDGkREREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQagYMaRERERERERERERESkETio8RnYsmULnJ2dYWZmhlKlSsHR0RFDhw5FVFSUFGfJkiU4dOhQkeft8uXLGDRoEBwdHaGlpYUvvvgiX8e5cuUKZDIZ/vzzT6XbU1NTUaZMGQwYMOBTsgsAmDlzJs6dO6cQLpPJ8Msvv3zy8bOyt7fHqFGjco334cMHVKxYEQcPHpTC3Nzcci3T8+fPo3379ihbtiwMDQ1hb28PX19fXLhwQYozc+ZMyGQy6c/AwACOjo5YsGAB0tLSpHiRkZEwNjZGZGRk3k+UiDRWcW5nVq1aBU9PT5QtWxalSpVCs2bNsG/fvk86ZnR0NMaNG4fq1avDwMAApUqVgqurK9auXYvU1NQCynnRGjhwIOrUqaPubBB9lopzHbpx40Y0a9YMlpaWMDAwQI0aNTB79mx8/Pgx38d8//49Zs2ahTp16sDIyAjGxsZwdnbGokWL8OHDhwLMfdGZOXMmTExM1J0NlUVGRkq/6w8fPqywffXq1dL2zJ48eYLBgwfDwcEBBgYGsLW1Rbt27eSuwcLCwuSuG3R0dGBnZ4evv/4ar169yjZPUVFR0NHRwU8//ZRtHCcnJ7i4uOTjjOVl931S9borr1S5JiMqiYpz+5bZ06dPYWJiAplMhpiYmDzty76o7PuiZDIZ/Pz8FOK/e/cOhoaGkMlk2LBhgxSekpKCpUuXon79+jAxMYGFhQXq16+PUaNGyf3usLe3l2tnrKys4O7ujtOnT8ulM2fOHHh4eOTjzElTcFCjhFuwYAH69++P1q1bY8eOHdixYwcGDx6My5cv47///pPiqashOXv2LE6fPo1GjRqhUqVK+T6Ok5MTatSogW3btindHhISgqioKPTt2zffaWSYNWuW0oYkPDy8QI6fXytWrICFhQV8fHxU3ufs2bNo3bo1dHR0sHLlShw8eBDff/894uPjcfHiRbm4hoaGCA8PR3h4OIKDg9GjRw9MnjwZCxYskOJkDIjMmDGjwM6LiIq34t7OzJkzB3Z2dlixYgV2796NevXqoUuXLti4cWO+jnf//n00atQI27Ztw5dffong4GDs3LkTTZs2xZgxYxAUFFTAZ1A0pk2bhq1bt6o7G0SfneJeh75+/Rre3t5Yt24dgoODMWjQIMydOxfffPNNvo4XExOD5s2bY/HixfD19cX+/fuxb98+dOzYEfPnz8eqVasK+AyKxtChQxEaGqrubOSZiYkJtm/frhC+bds2hUGa2NhYNGvWDBcvXsTMmTNx+PBhLFy4EJUqVVI6MLJ+/XqEh4cjLCwMU6ZMQUBAQI7XSjY2Nmjbtm2213N3797FX3/9VSDXW9l9nwIDAzF+/PhPPj4RFf/2LbNx48ble2CafVHZ90WZmJjgwIEDiI+PlwsPDAyEjo6OwnG+/fZbTJw4Ed27d8fevXuxceNGdO/eHUeOHEFiYqJcXF9fX6l/av369QAAb29vPHjwQIozcuRIXLx4USPbZ1KRoBKtfPnyYtCgQUq3paamSv/b2dmJkSNHFlW2lObB1dVV+Pj45PtYs2bNErq6uiImJkZhm7+/v7CxsREpKSn5Pn5CQoIQQggAYuHChfk+Tl6p8t6kpaUJe3t7sWjRIrnw3Mq0b9++omrVqkrLJfN7M2PGDGFsbKwQp0uXLqJJkyZyYSdPnhS6uroiKioqxzwTUclQ3NuZ6OhohTAPDw9Rp06dfB3P2dlZlC1bVjx9+lRh26NHj8Q///yT7b4Z7QgRUYbiXocqM2XKFGFoaJiv39U9evQQRkZG4vr16wrbXr16Jc6ePZvtvqxDlZsxY4ZwdXXN0z4RERECgOjbt68oVaqUSExMlLb9999/QktLS/Tr109k7i5YvXq1ACAePXqkcLzMn9XQ0FABQFy6dEkuzpIlS4RMJhPv3r3LNl8bN24UAMS1a9cUts2YMUPo6uqKV69e5elcM8v4DBX19+lTr3OJNJGmtG8hISHC0tJS/PLLLwKA0muH3LAvSnlflJeXl7C2thZbt26V2+bt7S21MevXrxdCCBEfHy90dXXFrFmzsk0np3y9fv1ayGQysXz5crnwQYMGic6dO+d4DqS5OFOjhHvz5g1sbW2VbtPSSn/77e3t8ejRIyxfvlyavpV5CtiGDRtQr149GBgYoHz58pg6darc8hobNmyATCbD+fPn4e7uDiMjI9jb22PdunW55i8jDwWhT58+SE5ORkBAgFz4hw8fEBgYiF69ekFbWztP5xQeHg4PDw8YGxtjwoQJ0hTsjP9lMhnCwsIAKJ/yd/DgQbRs2RJGRkawsLCAm5sbrl69CgCIj4/HqFGjUKNGDanMhg8fjrdv3+b53E+ePInIyEj4+vrmab83b97AxsZGKpfMVHlvTE1NkZycLBfWqlUrWFlZ8Y5fos9EcW9nrK2tFcIaNmwod4eYqk6fPo2LFy9iypQpKF++vML2SpUqoW7dugD+bymSixcvonnz5jAwMMDy5csBAKdOnUKLFi1gaGgIa2trDB48GK9fv5Y71vz581G1alUYGBigdOnSaNeuHSIiIlTa3rZtW/Tv31+KmzEtvkePHlLYnTt3IJPJcOnSJQCKy0/FxsZi2LBhKF++PAwMDFCxYkWF6eNPnz5Fv379YG1tDUNDQ7i4uODKlSt5Lleiz1lxr0OVsbKyQnJystwSpKp49OgRdu3aheHDhytd7s7S0hItWrSQy3PW3+IAcP36dXh5ecHY2BhmZmbw9fXF48eP5Y61bt061K5dG4aGhrCyskKrVq2k+i637UOGDEHr1q2luDExMdDS0kKTJk2ksPfv30NXV1e67si6/FRycjImTJiASpUqQV9fH7a2tujYsaPc7/zY2FiMGDECtra20NfXh5OTE44ePZqnMv1U7du3h0wmk7tLevv27ahatSqcnJzk4r558wZaWlqwsbFROI6q1w1CiByXaezatSsMDQ2V3vG8bds2eHt7w9LSEkD6dVbTpk1haGiI0qVL4+uvv5a7GzhjGayDBw/C19cXpUqVQo8ePXL8PilbaiU8PByenp4oVaoUTE1N0bRpUxw7dkzaPnnyZNStWxcmJiYoX748evfujefPn+daHkQlnSa0b8nJyRg1ahRmzZoFKyurfJ8r+6KU90Xp6OjA19dXrk6Pjo7G8ePH0adPH7m48fHxSE5OzvYzk3U5xKyMjY2hra2t0D/Vo0cPHDx4MM/LipFm4KBGCefk5ISVK1dizZo1ePHihdI4gYGBKFu2rNz0rYxpY4sWLcLQoUPh5eWFAwcOYNKkSfj9998xdepUheP4+fnBw8MDgYGBaNOmDYYMGaJ0KnJ+uLm5wd7ePsc4VatWRZMmTRQ60w8ePIi4uDhpOl5ezqlPnz5wd3dHUFAQ+vfvj/DwcADAN998I5VVo0aNlOZnx44d6NixI2xsbLB161Zs2bIFLVu2xLNnzwAACQkJSE1NxZw5cxAcHIyffvoJJ0+eRJcuXfJYOsDx48dRsWJFVKxYMU/7OTk54dy5c5g2bRpu376da/yUlBSkpKTg3bt32L9/P3bv3q3QeGlpaaFZs2ZyP/aJqOTSxHbmzJkzcHR0lAtTpZ05efIkgPSpzapISkpCnz590K9fPwQHB8PT0xNXrlyBh4cHTE1NERAQgJ9//hkHDhxA+/btpQuaTZs2Ydq0adL5rVmzBg0aNEBcXJxK211cXHDq1Cm5fBsYGMitM3vy5EmYmJhk24aNHTsWQUFBmDt3Lo4cOYKFCxdCX19f2v7mzRu0atUK165dw9KlS7F7924YGxvD3d1dbp1kIsqZptShKSkpSEhIwOnTp7FkyRKMGDECurq60vaBAwfm2uFw+vRpCCFUrkMBxd/iT548gYuLC169eoU///wTK1euxF9//QVXV1e8e/cOQPrA8ZAhQ9ChQwccOnQImzZtQtu2bREbG6vSdhcXF1y6dEl6vsepU6egr6+Pq1evSmmcO3cOKSkp2T7fYd68eVi5ciUmT56Mo0ePYtmyZShXrpy0JnhSUhI8PDwQFBSEOXPmYP/+/ahVqxZ8fHxw/fp1lcvnU+nr66Nbt25yHU7btm1D7969FeI6OTkhLS0Nffv2RXh4OFJSUnI8dmpqKlJSUvDhwwdcuXIFv/zyC9q1awczM7Ns9zE1NcUXX3yB7du3QwghhV+5cgV3796Vrud27dqFTp06oW7duggMDMSCBQuwZ88eDBkyROGYX375JapUqSItLZXT9ymrs2fPws3NDR8/fsSaNWuwe/dudO7cWW4QLSoqClOmTMHBgwfx22+/ITIyEq6urrmWD1FJpwnt22+//QZtbW18/fXX2cZhX1TOcuuL6t27N44cOYI3b94AAAICAlChQgU0b95cLl7p0qVRqVIl/PTTT9i+fbsUPztCCKl/6vnz5xgzZgx0dHQU6vPmzZsjNTVVGgCiEka9E0WosF2/fl1UrVpVABAAhIODg/j2229FRESEXDxl07fi4uKEiYmJ+P777+XCV6xYIQwNDaWpdevXrxcAxLRp0+Tiubi4iGbNmqmc15ym5bq7u4sqVarkeoyMac2PHz+Wwrp37y7tm9dzmj9/vkIayGbKX+bwtLQ0UaFCBeHl5ZVrnjMkJyeLM2fOCADizp07UrgqU/48PT2Vll1uU53j4uKEh4eH9PmwtLQUffr0EadOnZKLN2PGDClO5r9evXopnUY5Y8YMYW1tndspE1EJoEntjBBCbNmyRQAQgYGBcuGqtDPDhw8XAMSHDx9yTSej3ty+fbtceNeuXUWlSpVEUlKSFHbkyBEBQOzfv18IIcTIkSNFo0aNsj12bttPnDghAIjIyEghhBCdO3cWI0aMEFpaWuLWrVtCiPTlBz09PaV9/P39Re3ataXXtWvXFmPHjs02jenTpwszMzPx8uVLKezDhw+iUqVKYsKECdnuR0TyNKEOTU5Olvv95+/vL7d0iBBCDB48WGhra+d4nPnz5wsA4vbt27mmmd1v8TFjxghjY2O5JYhu3bolZDKZ+P3334UQQixcuFBYWlpme+zctj98+FAAEGFhYUIIIUaPHi169+4trKysRHBwsBBCiKlTp4rq1atL+2RdqtXHx0d069Yt2zTWrVsndHR0xI0bN+TCmzZtKnr06JHtfkKkL9uSnJws/U2bNk24uLjIheW2zEnG8lMBAQHi6NGjwtDQULx7907cv39fuhZZvHix3PJTQggxYcIEoaWlJQAIQ0ND4eHhITZu3Ci3LEjG8lNZ/+rVqyf++++/HPMlhBB79+4VAMSZM2eksHHjxgkTExORkJAg0tLShJ2dnejdu7fcfsHBwUImk4l///1XLh/Dhw9XSCO766us4S1atBC1atVSedmYlJQU8fTpUwFAHDlyRArn8lP0OSru7duzZ8+EqampCAkJkTtW1uWn2Bf1aX1RGflZs2aNEEKIVq1aie+//168efNGbvkpIdLr7TJlyggAQiaTCUdHRzF58mSF98TOzk6hjTE0NBQ7d+5Umkc7Ozsxfvx4VYuDNAhnapRwderUwY0bN3Dw4EGMHj0aZmZm+P3331GvXj1cu3Ytx33PnTuH9+/fo0ePHtIIaEpKCtq1a4fExET8+++/cvG7du0q97p79+64cuVKjlOMVRUSEoL79+/nGq9Xr17Q0tLCjh07AADv3r3DwYMHpalteT2nvDx0O7M7d+7g6dOnGDx4cI7xNm/ejIYNG8LExAS6urpo1aoVgPQH4eXF8+fPUbp06Tzn09TUFEePHsWFCxcwffp0NGjQAAEBAXB1dcWaNWvk4hoaGuLSpUu4dOkSzpw5g99++w2HDx/GsGHDFI5rbW2NmJgYhal/RFTyaFI7888//2D48OEYNGiQwp1IqrYzQO7TnzPL2o6cPn0anTt3lrvD2dPTE+bm5jhz5gwAoFGjRrh69SrGjh2LM2fOKNSluW1v1qwZ9PT0cOrUKQghcObMGXTu3Bn16tWTZpucPn062zuMM9LYsGEDfvnlF4X3AQCOHj2KNm3awNLSUnrftLW14erqKrfECxHlTBPqUB0dHVy6dAmnT5/G4sWLERQUhEGDBsnFWbt2rcp3pn9qHeru7i4tQQQANWvWRP369eXq0NevX2PgwIE4duwYEhIS5I6R23YHBwdUqFBBmvF26tQpuLm5oXXr1lIdeurUqVzr0EOHDmHmzJm4dOmSwlJdR48eRd26dVG9enW5987DwyPXOnTw4MHQ1dWV/mbPno1Tp07JhVWpUiXHY2Tm7u4OU1NT7N27F9u2bUOjRo1QvXp1pXEXLFiA+/fvY/HixWjfvj0uXrwIf39/DBgwQCHupk2bcOnSJVy4cAHbtm1DUlISvL298f79+xzz0759e1hYWEizR4QQ2LFjh7Q01d27d/Ho0SP07NlTruxcXV2hpaWFy5cvyx0vv9dzCQkJOH/+PPz9/ZUu1ZshODgYLVq0gJmZGXR0dFChQgUAeb+eIyppinv7Nn78eHh4eMDd3T3HvLAvKme59UXJZDL06tUL27Ztw5MnT3D27FmlswGB9FkxDx48QEBAAL766iukpqZi/vz5qFOnjsLSwT179pT6p44cOYKePXuif//+SlcMsba25rKAJRQHNT4Denp66NChA5YsWYKrV6/i8OHDSEhIwI8//pjjfhlrzjVq1EjuR3K1atUAAE+ePJGLn3V91TJlyiA5OblI164rW7Ys2rRpI03727NnDz58+CBN98vrOZUpUyZf+Xj16hUAoFy5ctnGCQwMxIABA+Ds7IydO3fi/PnzCAwMBABpuruqPnz4ILcsSF45Oztj1qxZCAkJwZ07d1ChQgVMmjRJLo6WlhYaN26Mxo0bo2XLlvj2228xffp0rF+/XqEBzshLXs+DiDSTJrQzjx49Qvv27eHs7IxVq1bl5fQkGc/RyLp2e3aMjIzk1lgH0pdtUta2lClTRnquxsCBA7F48WIcOXIErVu3RunSpTF69GgkJiaqtN3Q0BBNmjTBqVOncOPGDbx9+xYtWrSQlqWKjIzE48ePc+yQW7p0Kfr3749ff/0VdevWRaVKlbBixQppe0xMDPbu3Sv3vunq6mLz5s0K7xsR5UwT6tDGjRujVatW+O6777B27Vps2rRJofM4N3mtQzPymJkqdai7uzs2b96MGzduwMvLC9bW1hgwYIDK2wHA1dUVp06dQlxcHP7++2+4uLhIdejHjx9x8eLFHOvQqVOnYtKkSdi4cSOcnZ1RtmxZzJo1S1pSKSYmBlevXlWoQ3/66adc69CMgZKMv2HDhqFRo0ZyYQcOHFCtgAFoa2ujZ8+e2LZtG7Zt26awznlWDg4O+O6777B79248ffoU3t7e+PPPP/HPP//IxXN0dETjxo3h7OwMPz8/bNmyBf/884/cevnK6OnpoXv37ggICEBKSgpOnTqFp0+fKlzPde3aVa7sjIyMkJqaWmDXc2/evEFaWlqO13OXLl1Cp06dUK5cOWzevBnh4eE4f/48AF4HEQHFt30LDw/Hrl278MMPPyA2NhaxsbHSAHdcXJzCYLcq2BeVvd69eyMsLAyLFy9G7dq1pWcQKmNsbAxfX1+sWLECd+7cwerVq/Hy5UuFZ4aULl1a6p/y9PTE+vXrUaNGDXz//fcKx9TX15euk6hk0VF3BqjoeXl5oX79+rh161aO8TLugNqzZ4/S9fEcHBzkXkdFRck9OPXly5fQ1dVV+pDWwtS3b18MGjQId+7cke42qlGjBoC8n1Ne7iTLLOMhUzk9iDYgIAANGjSQ61zLuPsrrywtLaV1gD+Vg4MDevTogUWLFuHly5c5NqYZa9LfuHFD4QGzenp6MDU1LZA8EZFmKW7tTExMDLy8vGBjY4M9e/bIzZLICzc3NwDAkSNHULVq1VzjK2tDLC0tlT5z4uXLl1J5aGlpYfTo0Rg9ejSePXuG7du3Y/LkybC2tsa0adNy3Q6krwm/e/duNGzYULoLy8XFBaNHj5bWh3d2ds4272ZmZliyZAmWLFmC69ev47fffsOIESNQp04dtG7dGpaWlvD29sbs2bMV9v2UQXYiKn51aFYZD5C+f/8+GjdurPJ+Li4ukMlkOHLkCNq1a6fSPlnr0Zzq0MyzC/r164d+/fohJiYG+/btw5gxY6Crq4u1a9eqtN3FxQVjx45FWFgYrK2tUbNmTcTHx2PSpEkIDQ3Fx48f5R4mnpW+vj5mzpyJmTNn4v79+1i3bh1mzpyJypUro3///rC0tES9evWk9PLC3t5ebn33oKAg3L17N0/vRVa9e/eWzqdXr14q72diYoIRI0bg8OHDuHXrFurVq5dt3MzXDbnp27cv1qxZg5CQEAQGBsLGxkb6zGR87pctW4amTZsq7Ju1Iy+/13Pm5ubQ0tLK8XouMDAQZmZm2Llzp/Tg40ePHuUrPaLPQXFp3+7cuYPk5GSlz6SoUqUKevXqhe3bt+d6PlmxL0o5JycnVK5cGb/99pvSa4ecDB06FJMmTcr1MyOTyVCzZk3s379fYVtsbCxq166dp3RJM3BQo4RT1imdmJiIJ0+eyH2p9fT0FEZkmzdvDiMjIzx9+lRhOp8ygYGBaNiwofR69+7dcHJyynG6bmHo1q0bvv76ayxZsgQhISH4+eefpW15PSdldHV1cx29rlGjBipUqID169ejZ8+eSuMkJiZCT09PLmzLli35ylONGjVUetB3VtkNWty9exf6+vowNzfPcf+MGRpZfyxERkZmO22diEqW4t7OvH//Hu3bt0dSUhJCQ0NRqlQpVU9NQatWreDs7Iy5c+eiW7dusLW1ldv+5MkTxMbG5nj3UatWrbB37178+uuv0NFJ/xl27NgxxMbGStO+MytfvjzGjRuHrVu3Kv0xn912FxcXzJs3Dzt37oSrq6sU9uzZM6xbtw7Ozs4qDz7UrVsXixcvxtq1a3Hr1i20bt0a7dq1w59//glHR0cYGxurdBwiUlTc61BlMpZ5qly5cp72q1SpknT35aBBg1CrVi257bGxsbh165bCw0Mza9WqFf744w+8efMGFhYWANI7p/755x+lS21YW1tjyJAhOHTokNI6NLvtLi4uiI+Px6JFi6QZGQ0aNIChoSHmz5+PihUr5vrg2AxVq1bF3LlzsWrVKimNdu3a4dChQyhXrlyOd9MWlebNm6NPnz6wsbGRlk/KKjo6GtbW1godbRlLlZQtWzbHNLK7blDGxcUF5cuXx8aNG3H06FH06dNH+pzWrFkTFSpUwMOHDzFy5Mhcj6WMsu9TVsbGxmjevDk2bdqEcePGKf2eJCYmQldXV65M8ns9R1TSFOf2zdvbG6GhoXJhhw8fxs8//4y9e/dKsyfyin1R2Zs8eTL2798vzVzJKjk5Ge/fv5fa9gxRUVF4+/Ztrm2MEAI3b95UaGPS0tLw+PHjXJfjIs3EQY0Srm7duujYsSO8vLxga2uLZ8+eYdmyZYiJicHo0aOleI6Ojjhx4gSOHTsGCwsLODg4wMrKCj/++CMmTpyIp0+fws3NDdra2nj48CH27duH3bt3w8jISDrGpk2bYGhoiEaNGmH79u04deoUDh48mGP+oqOjpRHh6OhovH//Hrt27QIAdOjQQTp+27Zt8ejRI5XWMixVqhR8fHywatUqyGQy+Pn5SdvMzc3zdE7KODo6Yt++fWjdujWMjY1Ro0YNhRkJMpkMv/zyC3r37o3u3btjwIAB0NfXR3h4OJo0aYIvvvgCHh4eGDlyJGbPno3mzZvj0KFDCAkJyfX8lGnZsiV27tyJ5ORkhTuQX7x4IZVpZj4+Phg2bBhSUlLQvXt3VKtWDXFxcdi1axeCgoLw3XffyXV4paWlSdOpk5KScOXKFfz000+oVauWwvT7y5cv53j3GhGVHMW9nenWrRuuXbuGdevW4dGjR3J3UDZr1kz6X9V2ZsuWLXBzc0Pjxo0xduxYODk54ePHjzh58iSWL1+OTZs25TioMXXqVLRo0QJffPEFvvnmG7x8+RKTJ0+Gs7MzOnToAAD46quvYGFhgWbNmsHCwgJnz57F33//jREjRqi0HUhvF7S1tXHy5EmMGzcOQPo0bUdHR5w8eRJTp07N8TxbtmyJrl27ok6dOtDW1samTZugp6cn1e1jx47Fli1b4OrqitGjR6NSpUqIjo7GhQsXUK5cOYwZMybH4xNRuuJeh7q4uKBr165wdHSElpYWLly4gF9++QXe3t5ys72GDBmCjRs35vpcjf/9739wc3NDy5YtMWbMGLRs2RIAcOHCBSxduhSTJ0/OcVBjzJgxWL9+PTw9PTF16lR8+PABP/zwAypVqoSBAwcCAGbMmIFXr17Bzc0NNjY2uH79Og4fPoyxY8eqtB1I7zi3sbHByZMn8fvvvwNIX6apZcuWCA4OzrZTJkOXLl3g5OSEhg0bwtjYGAcOHMCbN2+ktdsHDBiAVatWwc3NDePHj0f16tURGxuLq1evIikpCfPmzcvx+AVNJpNh8+bNOcbZuHEjNm/ejP79+6Nhw4ZIS0vDuXPn8PPPP8PJyUlhYP7ff/9FSkoK0tLS8PDhQ8yePRtGRkZKn7+RlZaWFvz8/LBo0SIIIeTKWyaTYdGiRejTpw/i4+Ph4+MDY2NjPHr0CAcPHsTcuXNzvbkqu+9TVvPnz4e7uzvatWuHESNGwMLCAn/99Resra0xePBgeHh4YMmSJfjmm2/QtWtXhIeH51qORJ+L4ty+lS1bVqGTPDIyEkD6b+DMHePsi8pZTn1RmQ0ePDjHgYW3b9+iWrVqGDBggPTcvoiICPzyyy/Q1tbG119/LRf/5cuXUv/UmzdvsHXrVvz777+YM2eOXLw7d+7g/fv37J8qqdT6mHIqdMuXLxfe3t6ifPnyQk9PT5QrV054e3uLEydOyMX7999/RevWrYWpqakAINavXy9t27Ztm2jSpIkwNDQUpUqVEg0bNhTTpk0TycnJQggh1q9fLwCIc+fOCVdXV2FgYCAqVaok/vjjj1zzFxoaKgAo/YuIiJDiubq6Cjs7O5XPe8+ePQKAcHd3V7pd1XOKjo5W2Pf06dOiUaNGwtDQUAAQoaGhQgghAIiFCxfKxd2/f79o2rSpMDAwEObm5sLd3V1cvXpVCCFESkqKGDdunChdurQwNTUVvr6+4vz58wKACAgIkI5hZ2cnRo4cmeP5vnjxQujo6IijR4/Khbu6umZbvk+ePBGHDx8Wffr0EZUrVxaGhobCyspKODs7i7Vr14qUlBTpODNmzJDbV0dHRzg4OIgRI0aIly9fyqX58uVLoa2tLUJCQnLMMxGVDMW9ncmuDsz6Eygv7czLly/F2LFjRZUqVYSenp4wNTUVLi4uYt26dVLdOWPGDGFsbKx0/7CwMNG8eXOhr68vLC0txcCBA8WrV6+k7Rs2bBAtW7YUlpaWwsDAQNSqVUv8/vvvKm/P0LhxY6GlpSVev34thQ0fPlwAEEeOHJGL6+/vL2rXri29njBhgqhbt64wMTERpUqVEi1btlTY5/nz52LIkCHC1tZW6OnpiQoVKghfX19x9uxZlcqRiIp/HTpmzBjh6OgojIyMhJmZmWjQoIFYtGiR+PDhg1w8f39/hXo1O3FxcWLmzJmiVq1awsDAQBgZGYkmTZqIxYsXi8TERLk8K/st/vfffwsPDw9hZGQkTE1NRbdu3URkZKS0/cCBA6Jt27aidOnSQl9fX1SpUkXMmDFDKo/ctmfw9fUVAMS1a9eksPnz5wsAYtWqVXJxs9b5CxYsEI0bNxZmZmbC2NhYNGrUSGzdulVun7dv34oxY8aISpUqCV1dXWFrays6dOgggoKCVCrHzGm7urrmaZ+IiAiFa46sFi9eLPee3rhxQ4waNUrUqVNHlCpVSpiYmIhatWqJadOmiTdv3kjxsl7fyWQyUbZsWdGpUyfx999/q5zHv/76SwAQVapUUbr96NGjwtXVVRgbGwtjY2NRu3ZtMW7cOBEbGyuXj0uXLinsm933Sdl119mzZ0WbNm2kz1uzZs3E8ePHpe0///yzqFChgjAyMhIeHh7i7t27CteFrq6uwsfHR+VzJyoJinv7llV27Q77ovLfF5VTvffmzRu59/vjx49i/vz5ws3NTZQtW1bo6+uLSpUqie7du4srV67I7WtnZyfXzpiamoqGDRuKtWvXirS0NLm4v/76q7Czs1MIp5JBJsT/f1oZUT5t2LABgwYNkqYkk3p0794dZmZmWLdunVrzsXz5cixevBj37t3L9zqQRESZsZ0hIso/1qFERFQSsX0rHopLX5QyTZo0QceOHTF9+nR1Z4UKgZa6M0BEBWPatGnYsWMHXr58qbY8pKWl4bfffsP06dM5oEFEREREREREVIIVh74oZU6dOoUHDx7g22+/VXdWqJBwUIOohGjQoAGWLFmCJ0+eqC0P//33HwYOHIh+/fqpLQ9ERERERERERFT4ikNflDJxcXHYtGkTzM3N1Z0VKiRcfoqIiIiIiIiIiIiIiDQCZ2oQEREREREREREREZFG4KAGERERERERERERERFpBA5q0CebOXMmZDKZ9GdgYABHR0csWLAAaWlpUrzIyEjIZDLs2rVLCluyZAkOHTqkclpr165F9erVYWBggPr16yMoKKhAz6Ug/Pfff+jevTtMTU1haWmJoUOHIi4uTuX97e3tVYo3c+ZMmJiYqBT33LlzaN68OQwNDWFnZ4eff/4ZXHmOqGQpqrp4x44d6N69OypUqACZTIZffvmlwM8lN1FRUTA1NcW///6bp/3u37+P4cOHo0GDBtDR0UGdOnVyjK+sPt6wYQNkMhliYmJyTe/27dvw8PCAsbExypYti4kTJyIpKUna/u7dO1haWuLs2bN5Og8AeP78OWbNmoU///wzz/sCgLOzM5YvX57n/d6+fYshQ4bA0tISpqam8PX1xfPnz5XGdXNzQ2RkpFyYss+fMklJSZg4cSJcXFxgbGycbZl7eHhgzpw5eT4PInUoino6Li4OM2fOhLOzM8zNzVGmTBl07NgR169fL5Rzyk5Jqadz8uDBA7Rv3x6lSpWCjY0NunTpgsePH6u0b14cOHAA9evXh4GBAapXr47169crjRcWFoaBAwcqhA8cODDXcgSAY8eOoU+fPqhSpQpkMhlGjRqlEOfs2bOwtrbO07VNhvDwcMycORNnzpzJ876a8HlSJa1Paffp81NUv+3Hjx+P2rVrw9TUFKVKlUKTJk2wffv2Aj+fnHz48AEVK1bEwYMH87RfdHQ0Ro8ejaZNm0JfXz/X/hFl3/GwsDDIZDJcvnw51/Q+pa8nKioKfn5+sLS0hJWVFTw9PXHt2jWV9s0LVft+IiMj4ebmphCuaj/T5cuXMWjQIDg6OkJLSwtffPGF0jSMjY0VrgdycuzYMTRq1AhGRkaws7PDsGHDVN43Q48ePTBhwoQ87zd79mx4eHjA3Nw818/EwIEDERYWphCu6vWxKmkNGzYsX+f/OeGgBhUIQ0NDhIeHIzw8HMHBwejRowcmT56MBQsWSHFsbW0RHh4Od3d3KSwvje327dsxbNgw9OrVC8HBwWjevDm6du2K8+fPF/j55FdycjK8vLxw9+5dbN26FStWrMCRI0fQp0+fHPdbvny5QkX/zz//YPPmzZ+cp/v378PLywu2trYICgrCd999h+nTp+PXX3/95GMTUfFSFHXxrl278PDhQ6U/XIvKnDlz4ObmplInTWY3btzAwYMHUbVqVdSqVUtpnIKqj9+8eQN3d3ckJSVhz549mDt3Lv744w+MHTtWimNqaopvvvkGU6ZMydOx4+Li0L59e/z888/o378/Vq9enaf9AwMDERkZicGDB+dpPwDo1asXjh49ipUrV2LLli24c+cO2rdvj5SUFABAUFAQTp06JbdPdHS03GdQFQkJCVi9ejUMDAzQunXrbONNmTIFv/zyC968eZPncyFSh8Kupx8/foxVq1bB09MTO3fuxOrVq/H27Vs0a9YMt27dKpRzUqak1NPZSU1NRadOnfD06VNs2bIFy5Ytg46ODh49epSnPOTmzJkz6Nq1K5o3b47g4GD06tULQ4YMkTovk5OTMXfuXLx//15uv8DAQJw7dy5PaR0+fBh///03XF1ds32oasuWLVG7du08X0f8888/aN++PRYsWIAOHTrgr7/+ytP+mvB5UiWt/Lb79Pkqit/279+/x7BhwxAQEICAgAA0aNAAvXv3xtatWwv8fLKzYsUKWFhYwMfHJ0/7PXv2DNu3b4eNjQ0aN26sNM7mzZvxzz//yIVFRkbm+eae/Pb1ZOjfvz/Onj2LFStWYN26dahYsSJu3ryZpzzkRpW+nwULFiA6Olpuv1OnTuX5huGzZ8/i9OnTaNSoESpVqqQ0jr29PXx9fTFjxgyVjvnw4UN07twZDg4O2L9/P6ZNm4a///47T/n666+/cODAAYwZMyZP+wHAqlWrkJSUhHbt2indfu7cOQQGBsqFvX//HnPnzkVycnKBpgUAkyZNwqZNm3Dv3r08HfuzIog+0YwZM4SxsbFCeJcuXUSTJk1y3NfOzk6MHDlSpXSqV68uevfuLRfWvHlz0b59e9UzW8i2bt0qZDKZuH37thR25MgRAUBcuHAh2/2Cg4NF06ZNxZw5c4Stra0YO3asaNOmjTh//ny2+2RX7ll9+eWXws7OTnz8+FEK+/7774W5ubn48OGDimdGRMVdUdXFqamp0v8AxMKFC/OW0U/07t07YWxsLPbs2ZPnfTPn3d/fX9SuXVshTm718fr16wUAER0dnWNac+fOFcbGxuLVq1dS2KpVq4S2trZ49uyZFBYZGSkAiGvXrql0Dh8/fhRt2rQRtra24ubNm2Ly5MlCW1tb7N+/X6X9hRDCxcVFfPvttyrHz3Du3DkBQBw5ckQKu337tpDJZGLHjh1CCCFu3rwpOnXqJPz9/UWDBg3EtGnThJOTk9iyZYsQQoiIiAgBQAQEBOSaXlpamhAi9zJ3cHAQixcvzvP5EBW1oqin379/L+Lj4+XC3r17JywtLcWoUaPyluF8Kmn1tDI3btwQAMThw4fzcnp55unpKVq0aCEX1rt3b+Ho6CiEECI5OVksXbpUNGrUSIwbN060a9dOdOzYUfj7+4snT54IIbIvx6wyl31On7eNGzeK0qVLi6SkJJXOITIyUpQrV064uLiIFy9eCHd3d1GmTBnx8OFDlfbXlM+TKmkJkfd2nz5fRfXbXpkWLVoIDw+PfO+fF2lpacLe3l4sWrQoz/tm/t5lV17nz58Xbdq0EWPHjhW2trZizpw5omnTpiI4OFgIIURoaKgAIC5dupRjWvnt6xEivR6TyWRi5cqVeTm9PFOl7+fPP/8UjRo1EtOmTRMNGjQQAwYMEJ07dxY3b94UQqjez5S57F1dXYWPj4/SeCdPnhS6uroiKioq12MuX75caGlpiYSEhFzjZmfAgAGiU6dO+do345yy+0w8efJE+Pv7i44dO4p27dqJcePGiUaNGomlS5eK5ORkIYTq18e5pZWhTZs2YvTo0fk6n88BZ2pQoTE1NZUbrcw6LdLe3h6PHj3C8uXLpSmVGzZsUHqshw8f4u7du+jZs6dcuJ+fH0JCQvDx48dCO48MmzZtQqtWrWBpaQkLCwu4ubnh4sWLcnGCg4NRr1491KhRQwrz8PCApaVljndKeHt748yZMzh37hyeP3+O+Ph4nDhxAk2bNs01X5cuXYKzs7M0HTXrCHtwcDC6dOkCPT09KczPzw+xsbEIDw9X9fSJSEMVZF0MAFpa6v3pkJHv9u3by4X/+uuvaNKkCczMzGBjY4MvvvgCd+/elYujSt5VrY/v378Pd3d3GBkZwd7eHuvWrZPbHhwcjHbt2sHS0lIK69mzJ9LS0nD06FEpzM7ODs7OzjmWeQYhBAYMGID79+/j1KlTcHR0xLx58/DDDz+gV69eKtXpEREROH36NHx9feXCDx48CA8PD9jY2KBUqVJo2rQpDh8+rHBO5ubm8PDwkMJq1KiBBg0aSG2co6Mj9u3bhxo1auDatWsIDg5GWFiYwl1s8fHxGDJkCMzMzGBpaYmxY8dKsz0yyGSyXM8HSJ9ivnHjRpXiEhVHBVlPGxsbw8jISC7MxMQEVatWxX///Vdo55BZSaunlcnI54MHD3LNrzLx8fEYNWoUatSoIeVv+PDhePv2rRTn48ePCA0NRY8ePeT29fPzw61btxAZGQkdHR2MGjUKQUFB2L17N0JCQuDn54cNGzagQoUKCudbp04dGBgYwMnJSWG2u6rte5cuXRAbG6vSXeCvXr2Ct7c3HB0dERwcjDJlyuDgwYNo2LAhvLy8VFoiTFM+T6qWX17afSJlCvq3vTJWVlYqL8X3qU6ePInIyEiF36aq9L+o8r1r2rQpTpw4gfj4eDx//hznzp3DmTNn4O3tLRcvKioK3bp1g7GxMWxtbTF37ly57fnt68nIp0wmy3ebAQCTJ09G3bp1YWJigvLly6N3794KS8Cq0vfTt29fhIWF4dChQ7h27RocHR2xd+9eODo6yh0rt34mVeu8Vq1awcrKSqWZP1paWkhLS0NERIRKx84qPj4eu3fvVvgshYeHo1OnTihXrhyMjY3RoEEDpbPxcjunChUqYMOGDVI/5O7duxEUFIRRo0ZBR0dHipeSkoKJEyeidOnSMDU1xcCBA/Hu3bs8pZWhR48e2LJli8J1EqXjoAYVmJSUFKSkpODdu3fYv3+/0soks8DAQJQtWxa+vr7SlMrsphvevn0bAFCzZk25cEdHRyQlJeVY6QkhpLzl9CdyecZEZGQkBgwYgICAAGzduhWVKlWCi4uL3I/n27dvK+RRJpOhZs2a0jkoc/z4cbi4uKBFixawtbWFkZER2rVrl+u6jsnJyejVqxf8/f2xZ88eVK1aFV27dpXWTY6Pj8eTJ08U8lSzZk3IZLIc80REmqkw6+JPUVB18fHjx9GoUSMYGBjIhT99+hSjRo3Cvn37sGbNGqSlpaFFixZ4/fp1nvKpan3s5+cHDw8PBAYGok2bNhgyZIjcIICy9sDc3By2trYKdW+LFi1w7NixXPM2ZswYXLhwAadOnULVqlWl8JkzZ2L69Ono2LFjrvV6SEgIdHR04OzsLBceERGBjh07YvPmzdi9ezdatmyJDh06yK0Ve/v2bdSoUUNhsMHR0VFK9+7du+jevTtu376N+vXro3379mjTpg127twpt8+UKVOQlpaGnTt3YsKECVi6dCl++OGHXMtAmRYtWuDatWsKU+mJiquirqdjY2Px77//KnRYZMV6Ovt6OquaNWuiSZMm+OGHH/K1LERCQgJSU1MxZ84cBAcH46effsLJkyfRpUsXKc6DBw+QnJys9PonI/+pqalYuXIlOnbsiG7duqFt27bYvn07hgwZIjeI9fz5c4wYMQITJkzAzp07oa+vDy8vL0RFReU576VKlULt2rVzbbcSExPRsWNH2NvbIygoSBpsMzAwwL59++Do6AgfHx/Ex8fneBxN+TzlhartPhFQNG1GRv0fGxuLzZs34+jRo0qfq5Nd3j61zahYsSIqVqwoF65K/4sqLl++jHbt2sHIyAi2trZo0aIFXF1dcfz4cbl4X375JapUqYI9e/agX79+mDp1KlauXCltz29fDwAYGRmhW7du+P333/P9TJ2oqChMmTIFBw8exG+//YbIyEi4urpKnd2q9v3s3LkT7u7u6NChA+rXr4+bN2+ie/fucuWaWz9TXmhpaaFZs2Yq1Xldu3aFsbExBg4ciMTExDynFR4ejvj4eLRs2VIu/NGjR2jZsiXWrFmDAwcOoHv37hgyZEieb4r677//MGTIEGzfvh1t27ZFt27d0LFjR6xcuRKpqalSvKVLl+LWrVvYuHEj5s+fj927d+f72RgtWrRATExMoTx/pURQ2xwRKjFmzJghACj89erVS6SkpEjxlC05oeq0yD///FMAEM+fP5cLv3TpkgAgzp49m+2+GdO5cvsLDQ1V+ZxTU1NFcnKyqFGjhvj++++l8KpVq4qvvvpKIb6Pj0+O0zeXLl0qIiIihBDpZSKEENeuXRMbN27Mdp+Mcl+7dq0UlpKSIhwcHISfn58QQoinT58KAGLbtm0K+xsbG4s5c+bkeJ5EpDmKoi7OCnlYfqqg6uLq1avnmteUlBSRkJAgTExMxKpVq5TGyW5piNzq44xlKKZNmya3n4uLi2jWrJn0WkdHR8ybN0/h+LVr1xbDhg2TC1u/fr2QyWQiLi4ux/MqCF9++WWuy5BktHGenp5yyz62a9dOeHl5KcQfOXKkqFatmhBCiH379omwsDAhRPpU9IiICBEVFSXmz58vhPi/z1/r1q3ljjFt2jRhZGQkXr9+rXD83Jb+yDhmUFBQjudFpG7qqKeFEGLYsGHC2NhYWo4oO6yn0ymrp7O6ffu2qFy5sqhcubJwcHBQuEbJq+TkZHHmzBkBQNy5c0cIIaTX4eHhcnGjo6MFALFlyxbx8eNHMWfOHPHu3TsRGhoq/P39hRBC7N69W7o+8vf3FwBESEiIdIzY2FhhamoqJk+erDQ/uX3e/P39RePGjT/llFWmKZ8nVdLKUJTtPmmuomwzjh07Jh1fR0dHpWWSMtLN7W/9+vU5HsfT0zPbpYsyZNf/kll2yyZt3LhR/P3330KI//uOP3z4UCxdulQI8X9tX//+/eX269+/vyhfvry0TFB++3qEEOL58+eiUaNGokqVKsLS0lJa6im/UlJSpL6ejGVhVe37mT9/voiKihIRERHC1dVVCCFEWFiYtJStKv1MWeW0/FTGMa2trXM9r71794ry5csLCwsL8cUXX0hLOqlq7ty5wsTEJMc4aWlpIjk5WXz55ZeiefPmSuNktyTUmTNnxO7du4UQ6fV8aGioePfunZgzZ4605BcA4eDgIPcdXbt2rZDJZOLWrVsqp5UhOTlZaGtri2XLluV4Xp+r/5sfQ/QJDA0NpQeDfvz4EVeuXMH06dMxbNgwham5Rc3JyQmXLl3KNV7maYTK3Lp1C1OmTMG5c+fk7mrK650Cyii7C6J+/fqoX79+rvt27dpV+l9bWxtdunTB3r17PzlPRKR5Poe6+Pnz5yhdurRC+Pnz5zFt2jT89ddfcndp5rWOVrU+zlz3AkD37t0xfvx4pKamQltbO09pWltbQwiBly9fwtTUNE/75lV25ff06VNMnToVx48fx/Pnz6W76pycnPJ0/E6dOimElS5dGpMmTZILy1p+vr6+mD17Nq5fvw4XF5c8pWltbQ0AClPwiYqjoq6n169fj9WrVytdjigr1tOqSUxMhI+PD3r37o3Ro0ejVatW8PLywqlTp2BmZgYhBPT19fHHH39g4MCB2R5n8+bNWLRoEe7duyc3W+Hu3buoXr26SnnR09NT+tDpbt26yb02MzOTe4iwmZkZ2rVrhwsXLqiUTlbW1tZFVueWxM9TUbb7pNmKqs1o2rQpLl26hLdv3+Lw4cP45ptvoKOjgyFDhmS7T7ly5VRqMxwcHHLc/vz5c6W/Nwuq/2XAgAFK85T1u6/st+nmzZvx9OnTbB+Eraru3bvD0dERf/zxBzw9PeHp6Ylz585Js1OqVauGvn37YubMmdkeIzg4GLNnz8aNGzcQFxcnhd+9exeenp4q5yXjN3nmdsfV1VUhXkH2M1lbWyMmJgbJycnQ1dVVGuf69evo1asXgoKCYGxsjHbt2kmfc5lMhrNnz6JVq1aIiIiAvb290mM8f/5cui7I7M2bN5gxYwb27duHZ8+eSbMqrKys8nQeWWeAAOlLfGZthzt27CjXLvj6+mLIkCG4ePGiwkya3Ojo6MDc3JzXOdngoAYVCC0tLTRu3Fh63bJlS6SkpGDcuHEYO3Ys6tSp80nHt7CwAAC8ffsWZcuWlcLfvHkDAHJr4WZlYmKCBg0a5JpGTj9G3717B09PT5QuXRqLFi2CnZ0dDAwMMHToUHz48EEun5nXws2cz6zTKbMTGRmpUjwA0NXVlcomQ5kyZaQKz9zcHAAU8pSUlISEhIQcy42INE9h18WfoiDqYgD48OED9PX15cIeP34MT09PNG7cGKtWrUK5cuWgp6cHHx8fuTo6r3Kqj21sbORelylTBsnJyYiJiUGZMmVybA+y1r0Z55OfadZ5paz80tLS0KlTJ7x9+xY//vgjqlatCmNjY0yfPh2PHz+W4llYWODJkycKx1R2TgDklq7KSln5AfkbmCjK8iP6VEVZTwcHB+PLL7/EtGnT4O/vn2t81tPpsqvTMuzduxcPHjzAuHHjYGFhgaNHj6Jly5bo2LEjjh49imvXriElJQVt27bN9hiBgYEYMGAAvvzyS8yZMwdWVlZ4/vw5unbtKpVH5uufrPkDFK9/3Nzc4ObmpjQ9ZYMCZcqUwa1bt7LNY0709fWLrM7VlM9TXrDdIlUVVZthamoqpdO2bVukpKRg7NixGDhwYLZ1vp6eXqG1Gar2v+RVXr/jQPpv00qVKuW7ryc8PBznzp3D8uXLYWRkhKCgILi4uMDT0xNnzpzBx48f8eDBA7ln1mV16dIldOrUCZ07d8bkyZNhY2MDmUyGZs2aSeWR174fe3v7bH+r59bPlFcZ7++HDx+yHdRYtmwZatasiXbt2gEAdu/ejU6dOsHa2hoLFy7E6dOnUbVq1WwHNDKOn/WzBAADBw7EuXPnMH36dNSuXRulSpXCihUrsGPHjnydD4Acn1OT9bNUqlQpGBgYfFL5sb1QjoMaVGgy1nu9cePGJze2GaOZGet5Z7h9+zb09PRQuXLlbPc9efIk2rRpk2saoaGh2V4IhIeH4+nTpwgKCpK7a+ft27dyd73VrFlTYZ1BIQTu3LmTYyOVX8nJyXjz5o1cg/Py5UvY2toCSH9YZMWKFRXWeLxz5w6EEHkeJSYizVOQdfGnKIi6GEjvxImNjZULO3z4MN6/f489e/ZIP+hTUlLyvK52XkRFRaF8+fLS65cvX0JXV1e6O0jZ+rpv377F8+fPFerejPPJ691C+WFpaalwQXf//n1cvXoVe/fuRefOnaXwrD+ea9asiePHj0MIIfdcjdu3b6Nu3bp5ykfWddxfvnwJAFL7lRdFWX5EhaEw6unz58/D19cX/v7++PHHH1Xah/V09vV0ZpGRkdDW1paeEWFnZ4ejR4+idevW8PPzw8ePH+Hr65tjJ1dAQAAaNGiAVatWSWEnT56Ui1OlShXo6uri9u3b8PLyksKze9ZgTpQ9cyjzNUNexcbGFlmdqymfp7xgu0Wfoih+2zs5OWHJkiWIjo6Wu6k0s8jIyFxnYQDpMwZzmrWm7Duuav9LQcrtt2l++3oyfndnzMoyNzfHkSNHpOfX1apVC40bN1Y6CyBDYGAgzMzMsHPnTukB048ePZKLU5B9P7n1M+VVbGws9PT0cpyZFhkZKbfd29sbGzZsQL9+/WBiYoL//e9/mDFjRo7pKPssffjwAUFBQVi0aBG++eYbKTwtLS1f56KKrJ+luLg4fPjwQSPaXE3DB4VTofn3338BIMcfenp6eiqNtFeuXBnVq1dHQECAXPiOHTvQtm1b6OnpZbtvxlT63P5yWmIjo2Mnczrnzp1T6Bhq3749/v77b7kHBoaEhODVq1fo0KFDrueZH4GBgdL/qamp2Lt3L5o2bSqXp3379iE5OVkK27FjB8zNzdGiRYtCyRMRFR8FWRd/ioKoi4H0ZU8iIiLkwhITEyGTyeTu/Nm5c6f04LzCkLnuBdLvJnJycpLuRmvfvj2OHz8u98M6ICAAWlpaClPEIyMjYWZmlu1FY0HKrvwA+Tbu0aNHCg8ybN++Pd68eYOQkBAp7O7du7h69Wqe27is5bdr1y4YGRnleXAE+L+LxdyWxCEqrgq6nr558yZ8fHzg7u4u95DT3LCezr6ezqxWrVpITU3Fnj175MIOHjyI4OBgHD16FAsXLswxb4mJiQrXL1u2bJF7ra+vjzZt2mDXrl1y4Tt27ICjo2OOd6tm9fbtW5w4cULu9fHjx+WuGfIiMjKyyOpcTfk85UVRtvtU8hTFb/szZ86gVKlSOaaRsfxUbn8dO3bMMS1Vf5sq638pSMp+m5YrV04aRMlvX0+tWrUApNdRGWxtbXH06FHcv38fGzZswKJFi3LMW2JiInR1deVuKsraZmTksaD6fnLrZ8qLyMjIXJdVrFWrFq5cuYKHDx9KYX369MGvv/6KmTNnwtzcHF999VWOx6hRowaio6Plltb6+PEj0tLS5D5L7969w/79+/N1Lqo4cOCA3IPDd+3aBZlMhiZNmuT5WNHR0UhISOB1TjY4U4MKRFpaGs6fPw8gfXrblStX8NNPP6FWrVo5ro3t6OiIEydO4NixY7CwsICDg0O2I5AzZ85E3759UaVKFbRp0wY7duzAhQsXpDUms5N5KmV+NWvWDCYmJhg5ciQmT56MZ8+eYcaMGXJ36wDpa+XNnTsX3bt3x9y5c5GQkIDx48fDx8cHzs7On5QHZfT09PDTTz/hw4cPcHBwwP/+9z88efJEbq3DCRMmYMuWLejduzdGjBiB69evY+HChZgzZ06Og0FEpHmKoi6+efMmbt68Kb2+fv06du3aBWNjY7Rv3z7bNAqiLgbSp91nvigAIK0TPmjQIHz11Ve4ceMGfv31V+nuzQwJCQk4dOgQgPRO+7i4OKmzyNXVVenyHNnZtGkTDA0N0ahRI2zfvh2nTp3CwYMHpe3Dhw/H0qVL0aVLF0yZMgXPnj3DhAkTMHz4cJQrV07uWJcvX0aLFi2kO68KU8uWLfHjjz/i6dOn0kVazZo1UaFCBUyePBmpqal4//690jauefPm8PLywuDBg/Hrr7/CwMAAU6dORb169RTWb8/NgwcPMGjQIPj5+eGvv/7CvHnzMGbMGLk7woKDgxEfH4/Lly8DSL9AMDU1Ra1ataQLRCC9/FRdNodI3Qq7no6KioKXlxcMDQ0xZswY6fsDpC9/kPm7kxXr6ezr6cy++OILtG7dGkOHDsWdO3fQunVrREVFYcOGDTA0NERKSgpmzJiR49IUHh4eGDlyJGbPno3mzZvj0KFDcgPGGaZNmwY3NzeMGDECPXv2RGhoKLZu3ZrnJTMsLS0xZMgQzJo1C+bm5pg/fz6EEPjuu++kOI8ePZLWx09ISMCDBw+ksvf19ZU73uXLlzFu3Lg85SG/NOXzlJe0irLdJ81W2G3GP//8g0mTJqFHjx6wt7fH+/fvERQUhDVr1mDevHnQ0cm+y1BPT69A24zMz1tQtf8FgPQ9u3nzJlJTU6XXTZo0gZ2dncr5OHHiBCZMmAAPDw8cO3YMmzdvxvLly6XvaX77eurXr48+ffpg+vTpiIqKgre3N969e4fdu3cjISEBVlZWmDVrFg4ePJht/4yHhweWLFmCb775Bl27dkV4eDg2b96sEK+g+n5U6WeKjo6WZhhGR0fj/fv3Utl36NBBms0IpNd5rVu3zjHNcePGYevWrXBzc8PUqVNRrVo13Lt3DytXrkT58uVx9+5dbNy4EYMHD872GC1btkRaWhquXr2KVq1aAUh/hlSTJk0wf/58lC5dGjo6Opg/fz7MzMwUZlScPHkS0dHRuHHjBoD0z0RkZCTs7e3z9Fn/+PEjunTpghEjRiAiIgKTJk2Cr6+vNMsqL2ll/I7LOB/KQl1PKKeSY8aMGQKA9KejoyMcHBzEiBEjxMuXL6V4ERERAoAICAiQwv7991/RunVrYWpqKgCI9evX55jWmjVrRNWqVYWenp6oW7euOHDgQGGdloLg4GBRu3ZtYWBgIOrVqycOHTokXF1dhY+Pj1y8p0+fim7dugkTExNhbm4uBg8eLN6+fVvg+ZkxY4YwNjYW58+fF05OTkJPT0/UqFFD7Nu3TyHu2bNnRdOmTYW+vr6oUKGCmDdvnkhLSyvwPBGR+hRVXZw1nYw/Ozu7Qjy7/3PlyhUBQNy9e1cufNOmTaJy5crCwMBANGvWTFy8eFHY2dmJkSNHSnEyzl3ZX2hoqErpr1+/XgAQ586dE66ursLAwEBUqlRJ/PHHHwpxb968Kdq2bSsMDQ2FjY2NGD9+vPj48aNcnKSkJGFpaSnWrl2b98LIh48fPworKyuF/F68eFE0adJEGBgYiGrVqomNGzcKf39/Ubt2bbl4sbGxYvDgwcLc3FyYmJiIbt26iWfPnqmcfsZ7sH79euHv7y9MTU2Fubm5GD16tEhKSpKLa2dnp/S9mjFjhly8jh07iv79++etIIjUoCjq6dDQ0GzrOVdX10I+w3QlrZ5WJj4+XkyaNEnY2dkJHR0dUa5cOTFs2DDx6NEjsWfPHiGTycSkSZOy3T8lJUWMGzdOlC5dWpiamgpfX19x/vx5hfddCCH27dsn6tatK/T09ETVqlXz3F5k1OVBQUHC0dFR6OnpiYYNG4qzZ8/KxcsoN2V/mV25ckXIZDJx//79POUjvzTl86RqWkXd7pPmKoo248WLF8LPz0/Y2dkJfX19YWNjI1xcXMTevXsL+/Tk8qCjoyOOHj0qF65q/0t237vc+pYyZLSbQUFBolOnTsLIyEiUKVNGzJ49WyFufvt6kpOTxfz580X16tWFrq6usLa2Fn5+fuLff/8V58+fFwYGBqJ379459tH8/PPPokKFCsLIyEh4eHiIu3fvCgBi4cKFcvE+te9H1X6mnH5vRERESPFevnwptLW1RUhISK5pR0REiD59+ghra2sp3VmzZon4+Hjx3XffCR0dnVz7AOvWrSumTJkiF3bv3j3h7u4ujIyMRMWKFcXChQul88zM1dVV6fn4+/vnmvcMAMS8efPE2LFjhaWlpTAxMRH9+/dX+JyomtY333wjWrdurXL6nxuZEELkMu5BREREVGw4OTmhc+fOmD59urqz8skOHjyIPn364NmzZzAxMSmSNMeNG4erV6/KLUWiqd68eYOyZcvi2LFjOd6xSERFqyTV0yRvwoQJuHLlSpG2ISXp86SOdp+ouOvevTvMzMywbt06dWeFCtjy5cuxePFi3Lt3T275rMKydOlS/Pbbb0WWXmFKSUlBpUqVMH/+fAwYMEDd2SmWOKhBREREGmXfvn34+uuvERERAX19fXVn55O4u7vDzc2tSDtqnj9/jqpVq+LcuXNyD1/URD/++CPCwsJKxAANUUlSkupp+j9xcXGws7PDvn37inQguSR9ntTR7hMVd9euXUPLli3x8OFDlClTRt3ZoQKSlpaGmjVr4ocffiiyTvnExERUrVoVK1asQKdOnYokzcKyadMm/PTTT7h582aOS8F9zlgqREREpFE6d+6Me/fu4cmTJ6hataq6s5Nv79+/h6urK8aMGVOk6dra2mLDhg2Ijo4u0nQLg6WlJX7//Xd1Z4OIsigp9TTJe/z4MWbPnl3kM+NKyudJXe0+UXHXoEEDLFmyBE+ePOGgRgny33//YeDAgejXr1+RpWloaIgNGzbg7du3RZZmYdHS0sK6des4oJEDztQgIiIiIiIiIiIiIiKNoKXuDBAREREREREREREREamCgxpERERERERERERERKQROKhBREREREREREREREQaQeVBjf/++68w80E5YNmrD8tevVj+monvm/qw7NWL5a8+LHvNxfdOfVj26sOyVx+Wvebie6c+LHv1YdmrD8u++FN5UCM5Obkw80E5YNmrD8tevVj+monvm/qw7NWL5a8+LHvNxfdOfVj26sOyVx+Wvebie6c+LHv1YdmrD8u++OPyU0REREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQagYMaRERERERERERERESkETioQUREREREREREREREGoGDGkREREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQagYMaRERERERERERERESkETioQUREREREREREREREGoGDGkREREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQagYMaRERERERERERERESkETioQUREREREREREREREGoGDGkREREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQagYMaRERERERERERERESkETioQUREREREREREREREGoGDGkREREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQagYMaRERERERERERERESkETioQUREREREREREREREGoGDGkREREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQagYMaRERERERERERERESkETioQUREREREREREREREGoGDGkREREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQagYMaRERERERERERERESkETioQUREREREREREREREGoGDGkREREREREREREREpBE4qEFERERERERERERERBqBgxpERERERERERERERKQROKhBREREREREREREREQaQSaEEKpEvHPnDgwMDAo7P6REQkICjIyM1J2NzxLLXr1Y/upjZ2eX733ZXqgPvzPqxfJXH5a9+nxKewGwzVAnfm/Uh2WvPix79WF7obn4vVEflr36sOzVS5U2Q0fVgxkYGHxyI0T58+jRI5a9mrDs1Yvlr5nYXqgPvzPqxfJXH5a95mKboT783qgPy159WPaai+2F+vB7oz4se/Vh2Rd/XH6KiIiIiIiIiIiIiIg0Agc1iIiIiIiIiIiIiIhII3BQg4iIiIiIiIiIiIiINAIHNYiIiIiIiIiIiIiISCNwUIOIiIiIiIiIiIiIiDQCBzWIiIiIiIiIiIiIiEgjcFCDiIiIiIiIiIiIiIg0Agc1iIiIiIiIiIiIiIhII3BQg4iIiIiIiIiIiIiINAIHNYiIiIiIiIiIiIiISCNwUIOIiIiIiIiIiIiIiDQCBzWIiIiIiIiIiIiIiEgjcFCDiIiIiIiIiIiIiIg0Agc1iIiIiIiIiIiIiIhII3BQg4iIiIiIiIiIiIiINAIHNYiIiIiIiIiIiIiISCNwUIOIiIiIiIiIiIiIiDQCBzWIiIiIiIiIiIiIiEgjcFCDiIiIiIiIiIiIiIg0Agc1iIiIiIiIiIiIiIhII3BQg4iIiIiIiIiIiIiINAIHNYiIiIiIiIiIiIiISCNwUIOIiIiIiIiIiIiIiDQCBzWIiIiIiIiIiIiIiEgjcFCDiIiIiIiIiIiIiIg0go66M0BEmiM1NRWvXr1CYmJikaT39OnTIkmnMOjo6MDS0hKGhobqzgoRUZFje6E6mUwGc3NzlCpVSt1ZISIqckIIxMbGIi4urkjS0+T2AgBMTExgaWkJmUym7qwQERW5xMREvH79GikpKYWelqa3F/r6+rCysoKurq66s1JoOKhBRLn6999/8fvvvyMwMBAxMTHqzo7G0NbWRtu27vD3H4g+ffqoOztERIWO7UX+NWjQAD179sSYMWNgYGCg7uwQERWqV69eYdGiRQgICMC9e/fUnR2NUqFCBfj6+mLMmDGoVKmSurNDRFSohBDYsmULNm3aiBMnQpGamqruLGkMU1NTdOrUCSNGjECLFi3UnZ0Cx0ENIsrR5cuX4eHhgVKljDF4cHc0b94IRkaGvDsoF0lJyYiIeILdu4PRt29f3L17FzNnzlR3toiICg3bi/xJTU1FVNQrHDx4ArNmzcLJk2HYu3cfBzaIqMR69eoV2rZti4cPH8DXtz1+/PEbWFiYQUuLq2PnRAiBuLj3CAs7jz//3ITAwECEhYXB3t5e3VkjIioUQgjMmDEDs2fPhptbMyxZMh0ODhWhp1dyZx8UlMTED7h69Qa2bTsAd/dd2Lt3L7y9vdWdrQIlE0IIVSI+evQIdnZ2hZ0fUoJlrz6fe9mnpaXBzs4O5cpZ4+jRTTAz49IY+TF//v/w/fcLcPz4cbRt21bd2Sl0n/v3Rp1Y9ur1OZc/24uCceLEOfj4DMb48eMxe/ZsdWenSHzO3xt1Y9mrz+de9n379sXRo4cRGroNderUUHd2NNLTp8/h6toL5cpVwunTp9WdnSLxuX9v1Illrz6fe9kfO3YMnp6emD9/EiZN+lrd2dFISUlJ8PUdgePHz+LFixclaslb3gpBRNk6d+4cnj59ikWLfmAH1SeYNOlrODhUwo4dO9SdFSKiQsH2omC4u7dA794dsWPHDqh43xERkUZJTEzEvn378N13gzmg8QkqVLDFjBmjcebMGY1f952IKDs7duxA1ar2mDhxuLqzorH09PSwdOlMJCYmIigoSN3ZKVAc1CCibIWEhMDKygLNmzdSd1Y0mkwmQ6dObRESEqLurBARFQq2FwWnU6d2uHfvHjupiKhEunjxIuLj49GxY8mfvVzYOnVqBwAIDQ1Vc06IiApHSEgIOnZsy+VsP5GdXQXUr1+rxPVJcVCDiLL1+vVrlC1rw/VtC4CtrQ1ev36t7mwQERUKthcFx9bWBgDYZhBRiZRRt5UrV0bNOdF85uZmMDAwYHtBRCXW69ev2V4UEFvb0iWuveCVJxFlKy0tDdraBVNNyGT2mDlzcYEcSxPp6OggLS1N3dkgIioUbC8Kjo6ODgCwzSCiEimjbtPW1v7kY33u7QUA6Ohos70gohKL1xgFpyT2SXFQg4jyZcOGAMhk9nJ/NjZOaNPGD8HBuU+BPnfuCmbOXIzY2Lcqp/ns2Qv07DkS5uZ1UapUHXTuPBQPHz7+lNPIt1u37sPbewBMTGrB0rI++vcfg+joV2rJCxFRcVbU7cWdOw8wZsyPaNGiGwwMqkMms0dk5JNPPY18KU55ISIq7oq6vdiz5zB69RqJypVbw8ioJmrUcMe4cT/l6fqkoLC9ICLKm6JuMwIDD8PLqz/KlXOGvn51VKjQDL6+X+Pff+986qnkS3HqH1MXHXVngIg0248/joWDQ0UIIfDyZQw2bNiFDh0G4cCBtfjii/9bKzcx8bZ09ymQ3oDMmvUbBg70hbm5Wa7pvH8fjzZteuPt23eYMmUkdHV1sHjxOri69sK1a4dgZWVRKOenzNOnz+Hi0hNmZqaYO3cC3r9PwC+//IHr12/j4sV90NPTK7K8EBFpiqJqL8LD/8Lvv29ArVrV4OhYFdeu3SyU81FFccoLEZGmKKr24ssvv0e5cmXQr19XVKpUDtev38ayZZtw6FAo/vrrIAwNDQrl/JRhe0FElD9F1WZcv34HFhZmGD16EKytLfHiRTTWrdsJZ+fOCA/fg/r1axXK+SlTnPrH1ImDGkT0Sdq3d0PjxvWk10OG9EKZMo2xbdt+uQbEwODTLgr+97/NuHcvAhcv7kOTJvWltOvU8cKvv67G3LkTP+n4eTF37nLExyfgypUDqFSpPADA2bk+PDz6YcOGXfjyyz5FlhciIk1RVO1Fp04eiI1tD1NTE/zyyx9q7RgqTnkhItIURdVe7Nr1P7i5NZcLc3KqC3//cdiyZS+GDvX7pOPnBdsLIqL8Kao2Y/r00QphQ4f2QoUKzbFixZ9YuXLuJx0/L4pT/5g6cfkpIipQ5ualYGhoAB0d+XVyM69fOHPmYkyYkF7hOzi0lqYK5jTFeteuYDRpUl+qsAGgZs2qaNu2BXbuPFgIZ5K93bsP44sv2koDGgDQrl0rVK9eucjzQkSkqQqrvbC0NIepqUnhZTwPilNeiIg0VWG1F1kHNACga1cvAOlLzRYlthdERAWjsNoMZWxsrGFkZIjY2LiCybyKilP/mDpxpgYRfZK3b98hJuY1hBCIinqFpUs34P37ePTr1zXbfbp188bduxHYtm0/Fi+eBmtrSwBA6dJWSuOnpaXhn39uYfDgngrbnJ0b4OjR03j37n2OFwJv38YhOTkl1/MxMNCHiYlxttufPXuBqKgYNG5cV0le6uPQodzXbiQi+hwVRXtREN6/j8eHDx9zjaerqwMzs1KFlg8ios+VOtuLFy+iAQDW1rkv3cH2gohI/Yq6zYiNfYvk5BS8eBGNJUvWIS7uHdq2bZnrfgXVZhRE/1hJwUENIvok7dr1lXutr6+HdesWwMOjdbb71KvniEaN6mDbtv3o0sUT9vYVc0zj9etYfPyYBFtbG4VtGWH//fcSNWpkX2l37jwMJ09eyDEdAPD3744NG37Ndvvz51Fy6WbNS3peP0JfXz/XtIiIPidF0V4UhFGjpmPjxt25xnN1bYqwsB2Fnh8ios+NOtuLn39eCW1tbfj6dsg1LtsLIiL1K+o2o1mzrrhz5yEAwMTEGD/88A2GDOmV634F1WYURP9YScFBDSL6JMuXz0b16g4AgJcvY/Dnn4EYOnQyTE1N0K2bd4GkkZj4AUB645SVgYG+XJzs/PrrD3jz5m2uaZUrV6ZA8sJBDSIieUXRXhSEiROH53hnVwYLi9wfKEhERHmnrvZi69Z9WLt2ByZO/ArVqjnkGp/tBRGR+hV1m7F+/ULExb3Hw4ePsX79LiQmfkBqaiq0tHJ+wkNBtRkF0T9WUnBQg4g+ibNzfbmHMvXu3QkNG3bAqFHT8cUX7tDTU6xo88rQMP2BTh8/Jilsy5i+lxEnO05OistFqSsvRESfo6JoLwpCrVrVUKtWNXVng4jos6WO9uL06YsYMmQivLxcMGfOBJX2YXtBRKR+Rd1mNG/uJP3v59cJjo7pDyP/5ZepOe5XUG0G+6T+Dwc1iKhAaWlpoU2b5vjtt/W4dy8StWtX/+RjWlqaQ19fT1r6KbOMsNxmWLx+HYukJMVKPytDQ4Mc1y/MmM6XXV7S88pZGkREuSmM9qIgvH0bp9LdTXp6erC0NC/8DBERfeYKu734+++b6NRpKOrUqYFdu1ZAR0e1bhK2F0RExU9RXmNYWJjB3b0FtmzZm+ugRkG1GQXRP1ZScFCDiApcSkoqgPQHIWVHJpOpfDwtLS3UrVsTly9fV9h24cI1VK5cKdeHIHXr9lWBPFOjfPmyKF3aSmleLl78Gw0a1Mo1DSIiSlfQ7UVBGD16FtdIJyIqZgqrvXjw4BG8vf1hY2ONQ4fWw8TEWOV92V4QERVPRXmNkZj4AW/fvss1XkG1GQXRP1ZSlOxBjbQ04NUrdefi0338CERHqzsXn87KCshljTnSfMnJyTh69DT09PTg6Fg123jGxoYAgNjYOJWO6+vbHpMn/4zLl/+RphbeufMAJ06cw/jxw3Ldv6CeqQEA3bt7Y+PG3Xjy5D9UrFgOABASchZ37z7EmDGDc92fih82F+qTlga8fi0fZmmpmc2FJpZ/VkXZVBdWe/GpuEY65SRNpOFVQgloMAB8TP2I6HjNqbRS0lLw8M1DuTBzA3NoyTSvwUj9mIpb0bfUnY1PVs2qGnS0Cr9LobDaixcvouDp2R9aWlo4cmQjSpe2ylO+2F4QFV8iTSDhVYK6s/HJUj+mIj46+455TWFkZQSZVtHcqFRYbUZUVAxsbKzlwiIjnyAk5Jzc8lfZKcg241P7x0qKkj2o8eoVYKP4NHiN8/vvwLffqjsXny4qCihdWt25oAIWHByG27cfAACiol5h69Z9uHcvApMnf41SpUyz3S/jGRdTp/4CP7+O0NXVQceO7WBsbKQ0/ogR/bF69Xb4+AzG+PHDoKurg0WL1qJMGWuMG5d7pV1Qz9QAgClTRiIg4BDatOmN0aMH4f37eCxc+Afq1q2JQYN6FFg6VHTYXFBBKAnlX5hNdVG1F2/fxmHp0o0AgLNnLwMAli3bBHPzUjA3L4VRo/xzzGdBrpH+qXmh4udVwivY/FICGgwAvzf/Hd9u1vBKS0P93vx3fLtN88v+5oibcCztWODHLar2wtvbHw8fPsbEiV/hzJnLOHPmsrStTBlreHi0zjGfbC+Iiq+EVwn4xeYXdWfjkzX/vTk2f7tZ3dn4ZOOjxsO4tOoz4fKiqNqMunW90bZtCzRoUAsWFma4dy8Sa9fuQHJyMubPn5RrPguyzfjU/rGSomQPahBRoZs+fZH0v4GBPmrWrIIVK37CV1/1zXG/Jk3qY/bscVi5cgsOHz6JtLQ0RESczrYBMTU1QVjYdowZMxs//bQMaWlpcHNrhsWLp+X5rqpPVbFiOZw8uQNjx87G5Mk/Q09PFz4+7vj116l8ngYRUTaKqr148+Ytpk2TX0bw119XAwDs7MoXacdQccoLEZGmKKr24u+/02fLLFiwSmGbq2vTXAc1ChLbCyKi/CmqNuPrr/vi4MFQHD58Eu/excPGxgqenq0xZcpI1K1bs0DPKTfFqX9MnTioQUT5MnBgDwwcqPqsBCEiFcJ++OEb/PDDNyofo0IFWwQE/E/l+IWpdu3qOHJE8++YICIqbEXdXtjbV1R6DHUoTnkhIiruirq9KE71M9sLIqK8Keo2Y+bMMZg5c4zK6RW24tQ/pi6atwApERERERERERERERF9lj6/mRo3bwLW1rnHK07evElf5FqTxMQAtWqpOxdERPnG5qJo3L0LtGolH3bmDFC9unry8yk0rfzZVBMVjJsjbsLaSMMaDABvXr5BVEvNqbQuPLuAjts6yoX92fVPNLJtpKYc5V/qm1TcbHhT3dnIkwevH6Dj9o65RyQiKqZG3BwBI2vlSwsVVy/fvETLqJbqzkaeJMQk4H+1Pu8ZBFQ0Pr9BDWtrzXtYdUKC5uWZSgSZTIa0tDR1Z6NESEtLg0wmU3c2KA/YXBSNmBjFMEtLzTsPQDPLv6CwvSg4GeXINkNzWBtZo7Sx5n35E7QTNCrfFgYWCmH25vaF8qDqwvYo4RHsStupOxtqkVG3sc0oGLzGIFKdkbVRoT2surBoJ2hrXJ4LUvo1hlB3NkqEtLQ0aGuXrPaCy08RUbZKlSqFmJg3EIKNyKeKiXkNMzMzdWeDiKhQsL0oODExrwGAbQYRlUilSpUC8H91HeVfQkIiEhIS2V4QUYmVfo3B9qIgxMS8KXHtBQc1iChbLVu2xIsXUfjnn1vqzorGCw4+iZYtNWvaKBGRqtheFJzg4JMoX7487Ow+z7u4iahka9y4MXR1dXH48El1Z0XjZZQhrzGIqKRq2bIlDh8+pe5saLyoqBhcvvxPiWsvOKhBRNlq27YtLCwsMH36IiQnJ6s7Oxprx44DuH79Nnr06KHurBARFQq2FwXj5s17+PPPvejevTu0tPgznYhKHnNzc3h5eeH33zfg+XPNeaZLcRMX9w7z569AvXr1UF0TH0RGRKSCnj174tq1G9i5M0jdWdFYQgjMmLEYANC1a1c156ZgfX7P1CAilenp6WHDhg3w9fWFq2svDB7cE82bN4KxsSHXbs1FUlIyHj58jF27grF+fQD69euHTp06qTtbRESFgu1F/qWmpiEqKgZBQSewatVWVKhQEdOmTVN3toiICs3ixYvh5uaG5s274auvesPT0wWWlubQ0mJ7kRMhBOLi3iM0NByrV2/H06cvcfToUXVni4io0HTp0gV9+vRBnz6jcfz4WXTv7o3KlStBT09X3Vkr1oQQSEz8iKtXb2DTpt04cuQUVq5cidIl7AGQHNQgohx16tQJQUFBmD9/Pr76agof6pdHDg4OmDZtGn744Qdoa2urOztERIWG7cWnsbCwQNeuXfDzzwtgbW2t7uwQERWaqlWrIiwsDFOnTsVPPy3HlCkL1Z0ljaKrqwsvLy9s3LgVTk5O6s4OEVGh0dbWxqZNm1CtWjVs2rQJq1dvU3eWNE7Tps7Ytm0b/Pz81J2VAsdBDSLKlaenJzw9PREVFYV79+4hISGhSNJ9+fIlypQpUyRpFTQdHR2ULVsWNWvW5F3KRPTZYHuRd1paWjA3N0fdunWhp6en7uwQERWJqlWrYseOHUhISMD169fx7t07CCEKPV1Nbi8AwNTUFDVr1oS5ubm6s0JEVCS0tbUxc+ZMzJgxA7du3cLLly+RkpJS6OlqenthYGAABwcHVKhQQd1ZKTQc1CAildnY2MDGxqbI0nv06BEflEpEpIHYXhARkSqMjIzQtGnTIkuP7QURkWaSyWSoVasWatWqVSTpsb0o/vgEQiIiIiIiIiIiIiIi0ggc1CAiIiIiIiIiIiIiIo3AQQ0iIiIiIiIiIiIiItIIHNQgIiIiIiIiIiIiIiKNwEENIiIiIiIiIiIiIiLSCBzUICIiIiIiIiIiIiIijcBBDSIiIiIiIiIiIiIi0ggc1CAiIiIiIiIiIiIiIo3AQQ0iIiIiIiIiIiIiItIIHNQgIiIiIiIiIiIiIiKNwEENIiIiIiIiIiIiIiLSCBzUICIiIiIiIiIiIiIijcBBDSIiIiIiIiIiIiIi0gg66s7A5+bhw4cICAjAiRMn8OrVK7x79y7XfVJSUqCjk/NbpaenBwsLC9SsWRO+vr5o06YNdHV1CyrbJUJsbCz27duH/fv347///kNsbCzS0tJy3EeVstfR0YG5uTkcHBzQtWtXtG/fHkZGRgWZdSL6DL1+/Rr79u3DgQMH8N9//+Ht27cFUmdpa2vDzMwMFStWROfOndGxY0eUKlWqILOu8ZKSknD8+HHs3r0bd+/exZs3b5CcnJzrfrmVv0wmg5mZGcqUKYMOHTqgW7dusLGxKcisE9Fn6OPHjzh27Bh2796Ne/fuITY2tsDqLFNTU5QuXRqenp7w9fVFhQoVCjLrGk8IgcuXLyMgIACXLl3CmzdvkJiYmOt+qrTXJiYmsLCwgKurK3r06IGaNWsWVLaJ6DMlhMDFixcREBCAK1euFGidZWRkBAsLCzRr1gw9e/ZE/fr1IZPJCirrJUJkZCQCAgIQEhKCmJiYAusP1NfXh4WFBerVq4eePXuiZcuW0NLiPexU8nFQo4icPHkS48aNw5UrV2BoaAh3d3c4OTnBxMSkQCqbDx8+4M2bNwgJCcHq1athZWWFwYMHY968edDW1i6AM9BcL168wJdffonDhw8jJSUFzZs3h6OjI8zMzHJtHFSRlJSE2NhY/P3339iyZQuMjY3h6+uL5cuXw9jYuADOgIg+J8+ePcOXX36Jo0ePIjU1FS1btkStWrUKrM5KSUlBbGwsbt68iX79+kFfXx8+Pj74448/YGVlVQBnoLmSk5Mxfvx4bNq0CbGxsahRowacnZ3RsGFD6Ovrf/LxU1NTERcXh4cPH2LUqFEYOXIk3NzcsHLlSlSrVq0AzoCIPidJSUkYM2YMtmzZgrdv38LR0RGNGzeGubl5gdRZaWlpiIuLw5MnTzBp0iSMGTMGzZs3x9KlS+Hk5FQAZ6DZVq9ejblz5yIyMhLW1tZo06YNHB0dYWRk9MkdeUIIvH//Hi9evMCCBQswffp01KlTB/PmzcMXX3xRQGdARJ+T//3vf1iwYAEePXoEGxsbuLm5oVatWjA0NCyQOishIQFRUVFYuXIl5s2bh6pVq2L69Ono379/AZ2B5jp79izGjBmDS5cuwcDAAO7u7mjUqBFMTU0LpD8wMTERr1+/RmBgIJYtWwZbW1t8++23mDRpEgeWqETjoEYRCAsLg4+PD+rXr48dO3agQ4cOMDExKZS0hBC4evUqtm3bhl9//RXR0dFYs2bNZzuw8eLFC7Rp0wZv377FL7/8gu7du6N8+fKFlt69e/ewc+dOzJs3D48fP8aBAwc4sEFEKnv27BnatGmDxMRELF68GN27d4etrW2hpff48WPs2rUL8+fPR7t27XD8+PHPdmAjOTkZffv2RWBgICZMmAA/Pz/UrVu30C4EYmJiEBgYiIULF6JNmzYIDQ3lwAYRqSwpKQm9evXCoUOHMHHiRPTq1Qu1a9cutDrr7du3OHDgAH799VepvficBzZ+++03fPfdd/Dz88OaNWvg6upaIDceKJOYmIgjR45g2bJl6NatGwICAtC5c+dCSYuISqaFCxdi4sSJ6NevH9avXw8XF5dC6yNKTk7GiRMnsGrVKgwYMABJSUkYMmRIoaSlCc6cOYP27dujVq1a2LZtG3x8fGBqalooaaWlpeH8+fPYtGkTvv/+e8TGxmLevHkc2KASi4MahSw8PBw+Pj5o0aIF9u/fD0NDw0JNTyaToVGjRtJfv379oKOjg9WrVxdqusXRmzdv0KZNG8TFxeHkyZNF0llUrVo1TJ06Fa6urvD29kbHjh1x9OjRQrvIIaKSIyYmBm3atMGHDx9w8uRJVK5cudDTrFSpEsaOHQtPT0+4u7ujXbt2OH36dKENvBdn/fv3R2BgIHbt2lUknUXW1tYYNmwYvvjiC7i7u6NNmzY4d+4cKlWqVOhpE5FmE0LAz88Phw4dwp49e+Dj41PoaZqZmaFfv37o2LEjvL290a5dO5w6dQp169Yt9LSLm5UrV+K7777DxIkTMX/+/ELvLDI0NESXLl3g4+ODPn36oEePHti/fz+8vb0LNV0iKhl+//13TJw4ET/88AN+/PHHQq+zdHV14eXlBU9PT4waNQpDhw6Fnp7eZzlj49KlS2jfvj0aN26MoKCgQr/hVUtLCy1atECLFi1Qs2ZNjBkzBnp6evjxxx8LNV0ideEia4Vs/vz5qFKlSpEMaGTVu3dvLFmyBGvWrMHjx4+LNO3iYNu2bbh//75a7n5t1aoVdu/ejdDQUISFhRVp2kSkmTZv3oxHjx4hLCysSAY0MqtTpw6OHTuGa9euITAwsEjTLg5u3ryJHTt24I8//ijyu19tbW1x4sQJxMfH448//ijStIlIM2XU1evWrSuSAY3MzMzMcPjwYZibm2PJkiVFmnZxkJqaipkzZ2LAgAFFMqCRma6uLrZu3YqmTZvip59+KrJ0iUhzJScnY9asWRg6dGiRDGhkJpPJsGzZMnTv3h0zZ86EEKLI0i4uFi5ciIoVKxbJgEZW3333HSZPnowFCxao9OwOIk3EQY1CFBcXhyNHjmDQoEFFPqCRYeDAgdDX18euXbvUkr46BQQEoG3btqhevbpa0vf09IS9vT0CAgLUkj4RaZaAgAB4e3sX+YBGhvr166NFixafZZ0VEBCAUqVKoU+fPmpJ39bWFl26dEFAQMBnecFHRHkTEBAAS0tL9OzZUy3pm5mZoU+fPti7d69KDyQvSc6cOYOXL1/i66+/VstyHrq6uhg6dCjOnj2LZ8+eFXn6RKRZQkND8fr1a4wYMUItdZZMJsNXX32Fhw8f4urVq0WevjrFx8fj4MGDGDBggNqWJP/qq6/w8eNHBAUFqSV9osLGQY1CdODAAXz8+BG+vr5qy4OpqSnat2//2XVSvXjxAidPnlTbxR6Q3oD37NkTe/bsQUpKitryQUTF35MnTxAeHo4ePXqoNR89e/bEkSNH8PbtW7Xmo6jt3LkTnTt3LpAH6+ZXz549cffuXVy/fl1teSCi4k8IgYCAAHTt2hW6urpqy0fPnj3x+vVrnDhxQm15UIedO3eiUqVKaNq0qdry0LlzZ+jq6mL37t1qywMRaYaAgABUqVIFDRo0UFse2rRpAysrq8+uT+rQoUNISEhQ6/Wdvb09nJ2dP7uyp88HBzUKUXh4OGrVqoWKFSuqNR9eXl64cOECUlNT1ZqPonTx4kUIIeDl5aXWfHh5eSEmJgb3799Xaz6IqHi7cOECABSLOispKQl//fWXWvNRlOLi4nDz5k21l33btm2hra2Nc+fO/b/27jw+qvr6//h7khBiQlYSogQICKKoIHwxKIWKENmUnQQoS4FHW61UoC64VlFLrdSlldoF6wKlVcmwVUCEyFZJcS2l1kQRK5FNkpCFbGSZzO8PfkmNKMzAzP3MzbyejwePR3K5yefMSe45mTlz7zUaB4DAdvz4ce3fv994zerVq5eSk5ODrmbt3r1bw4YNM3rT1bi4OF177bVBl3sA3tu9e7eGDx9utGaFhYXphhtuCLqatXv3bnXr1k1du3Y1Gsfw4cODLvcIHgw1/Ki4uFjt2rUzHYaSkpLkdruD6p23xcXFkk49dpMaf/4lJSVG4wAQ2IqLi+VwONS2bVujcTTWzGCqWYHSL8LDwxUXFxdUuQfgvcaaZfo5hsPhUFJSUtDVrOLiYuP9Qjr18w+23APwXiC9JhVsNSvQ+gWXuEVLxFDDjyorK41dO++r2rRpI0mqqKgwHIl1qqqqFBYWpvDwcKNxNOa+srLSaBwAAltlZaUiIyMVEmK2LQdrv5AUMP2afgHgTBprRKDUrGDqF9KpnhEouadfADibQHpNin5hRps2bVRbWxtUV25B8GCo4WcmT/MLpBhMCITHHQgxALCHQKgXgRCDKYHw2AMhBgD2EAj1IhBiMCEQHncgxADAHgKhXgRCDCYEwuMOhBgAf2GoEaDy8/N155136rLLLlNUVJQSEhKUlpamJ554ouldpfCtgoICbdiwQQ899JBGjhypxMREORwOORwOzZo1y3R4APCN6BfWo18AsCt6hrXoFwDsin5hLfoF4L0w0wHgdOvXr9f06dN14sSJpm1VVVV6//339f777+v555/Xxo0b1a1bN4NRtjzJycmmQwAAr9AvzKBfALAjeob16BcA7Ih+YT36BeA9ztQIMHv27NHkyZN14sQJtWnTRr/4xS/0j3/8Q1u3btWPfvQjSdK+fft00003qby83HC0LVenTp00bNgw02EAwLeiXwQG+gUAO6BnmEe/AGAH9Avz6BeAZ3xypsayZcs0e/bsps/dbrcvvm1Qmj9/vqqrqxUWFqYtW7aof//+Tf83ZMgQXXLJJbr77ru1b98+PfXUU3r44YfNBdvCPPTQQ0pLS1NaWpqSk5N14MABdenSxXRYQItCv/Ad+oU59AvA/+gXvkXPMIN+AViDnuE79Asz6BeA9zhTI4C8++67euuttyRJP/jBD5o1j0Z33nmnevToIUl65plnVFdXZ2mMLdkjjzyiUaNGcdofgIBHvzCLfgHATugZ5tAvANgJ/cIc+gXgPYYaAWTdunVNH3/1XQZfFRISou9///uSpNLSUm3fvt2K0AAAAYR+AQDwFD0DAOAJ+gUAO2GoEUB27dolSYqKilLfvn2/db9BgwY1fZyTk+P3uAAAgYV+AQDwFD0DAOAJ+gUAO/HLUKOurk6LFi1St27dFBERoYsvvliPPvqoamtr/bFci5GXlydJ6tatm8LCvv12J5dddtlpXwMAdkS/ODf0CwDBhn5x7ugZAIINPePc0C8A2IlPbhT+dePHj9fGjRubPv/888+1cOFCffDBB1q3bp0cDoc/lrW1kydPqqioSJLUoUOHM+4bHx+vqKgoVVZW6uDBg1aEBwB+Qb/wHv0CQDCiX5wbegaAYETP8B79AoDd+OVMjddff10zZszQAw880GyC+9prr2nFihX+WNL2ysvLmz5u06bNWfePioqSJFVUVPgtJgDwN/qF9+gXAIIR/eLc0DMABCN6hvfoFwDsxi9DjUWLFunPf/6zFi1apHfeeUeJiYlN//fcc8/5Y0nbO3nyZNPH4eHhZ92/devWkqTq6mq/xQQA/ka/8B79AkAwol+cG3oGgGBEz/Ae/QKA3fhlqDFjxoymj2NiYjR69Oimz//5z3/6Y0nbi4iIaPrYk+s81tTUSJIuuOACv8UEAP5Gv/Ae/QJAMKJfnBt6BoBgRM/wHv0CgN14fE+NkydPKj8//xv/r/G6e42qq6ub7fvV4lhdXa19+/Y1TXX9qqZGWrKk+baSEqmqyv9rS6qqqmr22M8kOjq66WNPTt+rrKyU5NlpgY0OHTokt9vt8f7nxXDui4uLLVnHU8eOHfvW4wffrqqqirwZkpqaes5fa8d+YbhkeVWzrOgXRUVFlh17LtfpuXe5JKsO/SNHjlizkAfcbrfKysosy73p33tfol+Ycz79Qvr2nhGw/cJVoyX9mx84JcdKVBVqzYHjbc3yZ89wu92qqKiw7NiLrI48LfeRVZGWHvsNDQ2WrXU2NTU1lj52V43rtPy7SlzKr7JX7aVfmOOvfiEFbs8wzZvXf/z9HMPlclles/ov6d9s27GSYwqtCrVk/aoA+4M6Pz//jDd/9yXTufcV+oVZnvQMj3+jIyIivvUbfvVUPunUpLZjx45Nn3/1NLaIiAh1797d02XPT2GhNG9e820FBVJSkiXLR0ZGevyHb0REhNq2bavjx4/r0KFDZ9y3pKSkqYF8Nc9n06FDB3Xq1Mnj/c+L4dwnJCRYso6nkpOTz/uPuGCUn59P3mzIjv3CcMnyqmZZ0S8SExMtO/by8k7PfW6uZNWh35ifQOBwOBQbG2tZ7k3/3vsS/cK+vq1nBGy/qCzUvBXND5yCAQVKirLmwPH2jTv+7BkOh0Nt2rSx7Ng79MUhzdvdPPe7LtulPp36WLK+JIWE+OVCB+ekdevWlta9vMI8zXulef5z++QqNcletZd+YV92fI5hmjc3RPf3c4zQ0FBLj73KwkqtmNf8/ikDCgYoKinKkvUjIyM9OuPFKqmpqZYNNUzn3lfoF4HPL3+VffXGSydOnND69eubPu/bt68/lmwRLr/8cknS/v37VV9f/637ffzxx00f9+jRw+9xAYC/0C/ODf0CQLChX5w7egaAYEPPODf0CwB24pcx3c9+9jN9/PHHSk1N1apVq5qdCvijH/3IH0u2CAMHDtRbb72lyspKffDBB7rmmmu+cb+dO3c2fTxgwACrwgMAn6NfnBv6BYBgQ784d/QMAMGGnnFu6BcA7MQvZ2oMGjRIK1as0KJFi5pNcG+66SZ9//vf98eSLcK4ceOaPn7ppZe+cZ+Ghgb9+c9/liTFxcVp8ODBVoQGAH5Bvzg39AsAwYZ+ce7oGQCCDT3j3NAvANiJX4YamzZt0oMPPqguXbooPDxcnTt31sKFC7V69WqvrukXbPr166fvfve7kqQXXnhBu3fvPm2fp556Snl5eZKk+fPnq1WrVpbGCAC+RL84N/QLAMGGfnHu6BkAgg0949zQLwDYiU8uPzVr1izNmjWr2bZHH31Ujz76qC++fVB55plnNGDAAFVXV2vYsGG6//77NXjwYFVXV+vVV1/Vc889J0nq3r277rzzTsPRtiy7du3S/v37mz7/6imq+/fv17Jly5rt//XfeQBnR7/wHfqFOfQLwP/oF75FzzCDfgFYg57hO/QLM+gXgPf8ck8NnLs+ffpo5cqVmj59uk6cOKH777//tH26d++ujRs3Kjo62kCELdfzzz+v5cuXf+P/5eTkKCcnp9k2mggAk+gX5tAvANgNPcMM+gUAu6FfmEG/ALznl8tP4fyMHj1a//73v3X77bere/fuioyMVFxcnK6++motXrxYe/bsUbdu3UyHCQAwjH4BAPAUPQMA4An6BQA74EyNAJWamqqnn35aTz/9tOlQgsayZctOO6UPAAId/cJ69AsAdkXPsBb9AoBd0S+sRb8AvMeZGgAAAAAAAAAAwBYYagAAAAAAAAAAAFtgqAEAAAAAAAAAAGyBoQYAAAAAAAAAALAFhhp+1KpVK9XW1poOQzU1NZJOxRMsWrVqpfr6ejU0NBiNIxhzD8B7jf3C7XYbjSMYa1bjYw2Ufh1MuQfgPWqWWYH0/C7Ycg/Ae9QscwIp9w6HQyEhvPyLloffaj+Kj49XSUmJ6TBUWloq6VQ8wSIuLk5ut1tlZWVG42j8+QdT7gF4Lz4+XrW1taqurjYaR2O/SEhIMBqHleLi4iQpIPp1SUkJ/QLAGTXWiECoWaWlpUHVL6RTPSMQck+/AOCJQHpNin5hRklJieLi4hhqoEXit9qPunbtqtzcXOMvUn3wwQdKSUlRRESE0Tis1LVrV0mnHrtJH3zwgcLCwtSpUyejcQAIbIFUs6T/xRMMEhISFBcXZzz3H330kU6ePBlUuQfgvaSkJEVHRxuvWYWFhcrPzw+6mtW1a1fjuXe5XNqzZ0/Q5R6A9wKhZkmnnmMEW83q2rWrPvnkE5WXlxuNIxhzj+DBUMOPJk6cqMrKSm3atMlYDA0NDXI6nZo4caKxGEzo06ePunTpIqfTaTSOrKwspaenN70TGAC+Sb9+/ZSSkhIQNatXr17q1q2b0TisFBoaqvHjx8vpdBq9/JfT6VRMTIxuuOEGYzEACHzh4eEaPXq08X6xdu1aSdLYsWONxmG1jIwM5eTk6PDhw8ZieOutt3Ts2LGge34HwHsTJ07Ujh07VFBQYCyGffv2ae/evUFXsyZOnKiamhpt2LDBWAyVlZXasGFD0OUewYOhhh9dcskl6t27t1599VVjMfzjH//QkSNHlJmZaSwGExwOhzIzM7VmzRrV1dUZieHo0aP6+9//HnS5B+C9kJAQZWZmatWqVaqvrzcSQ1VVldavXx+UNSszM7PpCZcJbrdbTqdTY8aMUevWrY3EAMA+Jk2apA8//FC5ubnGYsjKytL111+vpKQkYzGYMGbMGLVq1croUCkrK0sdO3bUNddcYywGAPYwfvx4ORwOrVq1ylgMWVlZatOmjUaMGGEsBhNSU1PVr18/rVy50lgMGzduVHV1dVA+v0NwYKjhZ7Nnz5bT6dQf/vAHy9c+ePCgZs6cqUsuuUTf+c53LF/ftGnTpqm0tFTTpk2z/EXCEydOaOLEiYqJidG4ceMsXRuAPU2fPl0FBQWaOXOmXC6XpWvX1NRo8uTJqqur05QpUyxdOxCkp6erQ4cOmjp1qr788ktL13a73Zo3b55yc3M1c+ZMS9cGYE/Dhw/XhRdeqMmTJ6uwsNDy9R977DFt3bpVs2fPtnxt0+Li4jRhwgQ9+OCDysnJsXz9lStXaunSpZo1a5YcDofl6wOwl8TERI0ZM0b33Xef3nnnHcvX37p1q37xi19oypQpuuCCCyxf37TZs2frb3/7m5YsWWL52h999JHmzp2r7373u1x+Ci0WQw0/mzt3rubPn685c+boqaeesuT+Gm63W3v37tX111+vhoYGZWdnB+VNgXr16iWn06m1a9dq6tSplp1yeeDAAY0YMUK5ubnKzs5W27ZtLVkXgL317dtXr7zyilauXKkZM2ZY9kLV0aNHlZGRoezsbL322mtBdempRuHh4dq6davKyso0ZMgQy979XFpaqp/85Cd69tlntXTpUi49BcAjERER2rZtmwoLCzVkyBB98sknlqxbUVGhhQsX6oEHHtAjjzyiadOmWbJuoHnhhRfUt29fjRgxQhs3blRDQ4Pf16ytrdXzzz+vqVOnatq0aVq4cKHf1wTQMixfvlw9e/bUsGHD9MYbb1hSs1wul1avXq1Ro0Zp8ODB+u1vf+v3NQPRLbfcogULFmj+/PlavHixZa8H7tq1S0OGDNGFF16oNWvW+H1NwJQw0wG0dA6HQ7/+9a/lcDh011136eGHH9bo0aM1ZswYtW/fXjExMT4ZOJw8eVLFxcXavXu3srKy9PHHH6tz587asWOHUlNTffBI7GncuHFyOp2aNGmSVq9ereuvv14ZGRnq3r274uPjFRZ2/odAbW2tSkpK9K9//UtOp1Pvvfee4uLilJ2drbS0NB88CgDBovHU4KlTpyorK0uDBw9WRkaGLrnkEsXFxfmkZtXV1am0tFS5ublatWqV3nrrLbVu3Vqvvfaahg0bdt7f3666d++u7du3a/Dgwbriiit05ZVXatKkSerXr5/i4+MVERFx3mu4XC6Vlpbq888/15o1a7RlyxbV19dr6dKluvnmm33wKAAEix49emj79u0aMmSILrvsMl111VXKzMxUWlqa4uPjfXIpu4aGBpWVlengwYNat26dXn/9dVVXV+uRRx7RQw895INHYU9RUVHauHGjRo0apVGjRumiiy7SxIkTNXToUCUmJioqKuq8z6Jwu90qLy/Xl19+qY0bN2rdunUqLS3V97//fb344osKDQ310aMB0NJFR0dr06ZNuvHGGzVy5EilpKQoIyND6enpSkxMVGRkpE9qVkVFhQoLC7V582atWbNGBQUFGjlypNasWeOTv6PtyOFwaPHixZKke++9Vz//+c81atQojRkzRh06dPDJ64Fut1vV1dUqLi7Wjh075HQ6deDAAV111VV68803lZiY6IuHAgQkhhoWaBxs3HLLLXI6nXI6nXrllVf8slZsbKzGjh2rJ554QkOHDuXa3Do12Dhy5IjWrl2rrKwszZ071y+XdomIiNDIkSN1++23a9SoUYqOjvb5GgBavszMTA0aNKipZs2ZM8cv76gKCwvT0KFD9cILL2js2LFKSEjw+Rp20717d+3fv1+bN2+W0+nUr371K1VUVPhlrYEDB+rJJ5/UxIkTlZKS4pc1ALRsPXr00H//+19t2rRJTqdTv/zlL1VZWemXtfr27auHH35YGRkZuvjii/2yhp1ERUVp69at2r17t5xOp1atWqVnn33WL2t1795dt912mzIzM9WzZ08uOwXAa9HR0dq5c6dycnLkdDqVlZWlZ555xi9rderUSTNmzNCkSZOUlpYW9DXL4XDoV7/6lX74wx82vR7or/tsJCYmasKECZo0aZIGDRrkkzfEAYHM4Xa73Z7smJ+fb793/BcWSu3aNd9WUCAFwA3tioqKdPz4cZ04ceKs+x49elQXXXTRGfdp3bq14uPjlZycrPDwcF+Fee4COPfl5eUqLCxUaWnpWYcbnuQ+LCysKffBeJ1If7Jl3YEtf24BXLJUXl6ugoIClZaWnnW44UnNCg0NVVxcnNq1a6c2bdr4MtRzkpcnXX558225uVKPHmbi+aqamhodO3ZMJSUlqq2tPev+Z8t/SEiIYmNjlZSUpNjYWF+Gek4C+ffeW3asOzjFbj+7wspCtXuy+YFTcFeBkqLMHzg1NTX68ssvVVJSorq6urPuf7aa5XA4FBMTo8TExIAYfOd8kaOBLw1stm3X7F0a0GmAoYj+p6GhoSn3VVVVZ93fk34dHR2t+Ph4tWvXLiBeFMwrzNPlv2/esHPn5KpHUgA0bC/Yrebgf/jZ+Y4/alZUVJTi4+N14YUXBkTNqiys1JPtnmy27a6CuxSVFGUoov9pfD2wvLxcZ3tJ1pPcR0RENOU+EAYZgZx7b1BzAp/53/YglZiY6PFpYBxIvhUdHe3xWRTkHoBp1CxzWrdurU6dOqlTp04e7U/+AZjUunVrpaamelyHqFm+ExISovbt26t9+/Ye7U/uAZhEzTKL1wMB3wi+u0cDAAAAAAAAAABbYqgBAAAAAAAAAABsgaEGAAAAAAAAAACwBYYaAAAAAAAAAADAFhhqAAAAAAAAAAAAW2CoAQAAAAAAAAAAbIGhBgAAAAAAAAAAsAWGGgAAAAAAAAAAwBYYagAAAAAAAAAAAFtgqAEAAAAAAAAAAGyBoQYAAAAAAAAAALAFhhoAAAAAAAAAAMAWGGoAAAAAAAAAAABbYKgBAAAAAAAAAABsgaEGAAAAAAAAAACwBYYaAAAAAAAAAADAFhhqAAAAAAAAAAAAW2CoAQAAAAAAAAAAbIGhBgAAAAAAAAAAsAWGGgAAAAAAAAAAwBbCTAfgVw0Np2/bt08qKrI+lvPhckl5eaaj8E5x8enbvunnAQABgHZhzv79p2/79FPr4/AFu+WfVg14r8F9+kGy7/g+FVXZrGFIctW4lFdon6L1WfFnp21764u3VHKyxEA056ddXTt9uO9D02F45WDZwdO2uRpcBiIBgLNzN7hP23Z833FVFVUZiObc1bhqVJhXaDoMr1QXV5+27Zt+HsD5atlDjW96tj5woPVxnK8lS6R580xHcf6Ki6XkZNNRAMBpaBeBZexY0xGcm5aQf1o1cGbF1ac3jIEv2bBhSFrSf4nmvWLvonXf1vtMh3BOlvRfonm77Z17STpQdkBXJl9pOgwAOM03vbD+0sCXDERyfvov6a9X5r1iOozzVl1crTbJbUyHgRaGy08BAAAAAAAAAABbYKgBAAAAAAAAAABsgaEGAAAAAAAAAACwhZZ9T42EhNO37dr1zdsDmcsl5eaajsI7xcWnX5DebnkHEDRoF+Z8+unp99B47TWpWzcz8ZwPu+WfVg14L+GC0w+SXbN3feP2QOcqcSm3j32K1ruH3tWs12Y12/b4kMd1RfIVZgI6D+3q2mn999abDsMrB8sOas7rc5ptS41NNRQNAJzZBQkXnLZt9q7Z37g9kJW4StQnt4/pMLxSXVx92v1L7JZ32EPLHmqEfMOJKN27S0lJ1sdyPvLzpVSb/cFYWHj6tm/6eQBAAKBdBJZu3aQePUxH4T275Z9WDXgvxHH6QdK9bXclRdmsYUjKr8pXapJ9itY33qQ9daAGdBpgIJrzk5+fr36p/UyH4ZW8wrzTtoWFtOyXEwDYlyPEcdq2tt3bKiopykA0564qv0pJqfb6G6OysPK0bd/08wDOF09dAQAAAAAAAACALTDUAAAAAAAAAAAAtsBQAwAAAAAAAAAA2AJDDQAAAAAAAAAAYAsMNQAAAAAAAAAAgC0w1AAAAAAAAAAAALbAUAMAAAAAAAAAANgCQw0AAAAAAAAAAGALDDUAAAAAAAAAAIAtMNQAAAAAAAAAAAC2wFADAAAAAAAAAADYAkMNAAAAAAAAAABgCww1AAAAAAAAAACALTDUAAAAAAAAAAAAtsBQAwAAAAAAAAAA2AJDDQAAAAAAAAAAYAsMNQAAAAAAAAAAgC0w1AAAAAAAAAAAALbAUAMAAAAAAAAAANgCQw0AAAAAAAAAAGALYaYDCDYNDQ16++23tWXLFhUVFam8vFxut/uMX1NZWamoqKgz7tO6dWvFx8fryiuv1JgxYxQXF+fDqFuOvLw8rV+/XkeOHFFpaakaGhrOuL8nuQ8LC1NcXJy6dOmicePGqWPHjr4MGUAQ+/TTT/W3v/1Nhw4dUllZmVwu1xn396RmhYaGKi4uTqmpqRo3bpw6d+7sw4hbjoKCAq1bt0779u1TSUmJ6urqzvo1Z8u/w+FQbGyskpOTdeONN6p3795yOBy+DBtAkCoqKtK6dev08ccfq7S0VLW1tWf9Gk9qVkxMjJKTkzVixAj17duXmvUNqqqqtGnTJr333nsqKSlRdXX1Wb/Gk37dpk0bxcfHa9CgQRo8eLBatWrlq5ABBLGTJ0/qjTfe0DvvvKOSkhJVVVWd9Ws8qVlRUVFKSEjQwIEDlZ6ervDwcF+F3GK4XC7l5ORo69atTa8Hno03rwf26tVLY8aMUUxMjK9CBgIaQw2LfPnll3r88ce1atUqHT58WG3btlVKSopiYmIUEnL2E2aKiorO+P/V1dUqLi7WE088oVatWmnYsGGaM2eObrzxRl89BNuqra3VE088oVdffVX/+c9/FBUVpdTUVMXFxSks7OyHwNlyX1tbq9LSUv33v//VvHnz1L9/f82YMUM//vGPeeIHwGv19fV66qmn9Morr2jv3r2KjIxU586dfVaz6urqmmrW7bffrrS0NE2fPl233XabR/2opXv55Zf1/PPPa+fOnXI4HOratavi4+PVunVrj77+TPl3uVwqKyvTwYMH9bOf/Uxdu3bVpEmTdN999yk6OtpXDwFAEFm1apWee+45bdu2TW63u6lmRUREePT1Z6pZDQ0NTTXrwQcfVJcuXZSRkaH777+fN1BJevvtt/Wb3/xGGzZsUGVlpTp16qSkpCRFRkZ69BzgTLl3u92qqKjQ0aNH9dhjjykhIUHjx4/XggULdOmll/ryYQAIEh988IGefvpprV+/XuXl5erYsaOSkpIUFRXls5p17NgxPfbYY4qLi9O4ceN011136YorrvDlw7Clw4cP6/HHH9fq1at19OhRJSYmKiUlRdHR0T57PfD48eN64okn1Lp1aw0fPly33Xabhg4d6quHAAQkhhoW+PLLLzVkyBAdO3ZMU6dO1aRJkzRgwAC/vHh0+PBhrV69Wi+//LJGjRql5cuXa8aMGT5fxy5qa2uVkZGhzZs3KyMjQ4sWLdLw4cM9fqLnjbKyMq1fv15ZWVmaM2eOPv74Y/3mN79hsAHAY/X19Zo6darWrl2riRMn6sEHH9TIkSMVGRnp87XKy8u1YcMGOZ1O/fSnP9VHH32kP/zhD0E92Hj88cd13333aciQIfrjH/+o8ePHKzEx0efr1NXVadu2bXI6nVqyZIl27typN954g8EGAK8sWbJE8+fP13XXXadnn31WEyZMULt27Xy+Tn19vXbu3KmsrCwtXbpU27dvV3Z2dlAPNrZt26ZRo0apc+fOuv/++5WZmalLLrnE5+u43W7961//UlZWlv7yl79ow4YN2rZtmy6//HKfrwWg5crJydGIESN00UUXacGCBcrMzNRll13m83Xcbrc+/PBDOZ1OrVixQuvXr9fWrVt11VVX+Xwtuzh06JCuv/56nThxQtOmTVNmZqauvfZavzznOnjwoFatWqW//vWvGjlypF5++WVNmjTJ5+sAgYKhhp8dO3ZMQ4YMUVlZmXbv3q3u3bv7db2UlBTNmzdPt912m2655RbNnDlTkoJysNE40NiyZYv+9re/acSIEX5dLzY2VtOnT9f06dP1xz/+UbfeeqskMdgA4JGvDjScTqfGjRvn1/Wio6P1ve99T9/73ve0fPlyzZ49W5KCdrCxePFi3XfffVq4cKEefvhhv67VqlUrDR8+XMOHD9fNN9+soUOHasSIEQw2AHiscaCxYMECLV682K9/a4aFhSk9PV3p6em69dZblZ6erqFDhwbtYGP79u0aNWqUrrvuOq1bt84vb5Zq5HA41KdPH/Xp00d33HGH0tPTNWTIEG3fvl09evTw27oAWo7GgUbfvn21cePGs17K6Hw4HA716tVLvXr10h133KGhQ4cqPT09aAcbjQON+vp6vfvuu36/7G/Hjh11++23a968eZo5c6amTp0qSQw20GIF36sWFlu8eLGOHTum7du3+32g8VUhISFaunSppk2bpjlz5nh0bdeWZs2aNVq/fr3Wrl3r94HG1/34xz/Wb37zGy1ZskR79uyxdG0A9vT666/L6XTq1Vdf9ftA4+tmzpyppUuX6rnnntPu3bstXTsQHDlyRPfdd5/uvvtuvw80vq5fv37Kzs7W+++/rz/96U+Wrg3Ano4fP6477rhDc+fO9ftA4+t69+6trVu3Kjc3V7/73e8sWzdQuN1u3XrrrUpLS/P7QOPrkpKStHXrVsXExOiee+6xbF0A9jZ37lxdccUVfh9ofF18fLyys7N14YUX6q677rJs3UCyaNEilZeXa8eOHZbexzA0NFTLly/XuHHjdOutt3p0b0DAjhhq+FFDQ4OcTqemTp1q6UCjUUhIiH72s5+poqJCmzdvtnx905xOp9LS0jRy5Egj68+ZM0cJCQlyOp1G1gdgL1lZWbryyis1ceJEI+v/4Ac/UPv27YOyZq1evVphYWG67777jKzfr18/jRgxIihzD8B7a9euldvt1gMPPGDkbODevXtrzJgxQVmz/vOf/+iTTz7RPffcY+lAo1FSUpJuvfVWbd68WWVlZZavD8Be9u/frz179mjBggWWDjQaxcfHa+7cudq+fftZ7wvR0tTX12vNmjWaOXOmpQONRqGhoXrggQdUXFysbdu2Wb4+YAWGGn70zjvv6NChQ8rMzDQWw6WXXqpevXoF3ZOOiooKvf7660Zz36pVK02YMEFOp1Nut9tYHAAC38mTJ/Xaa68ZrVkhISHKyMjQqlWr1NDQYCwOE7KysjR06FCjl1GZNGmS3n77bX3xxRfGYgBgD06nU4MGDVJycrKxGCZNmqS9e/dq3759xmIwISsrS3FxcbrhhhuMxZCRkaHa2lqtX7/eWAwA7MHpdCoyMtLYGz0lacKECXK73Vq7dq2xGEzYuXOnCgsLjT6/6927t7p16xZ0rwcieDDU8KPs7GwlJCRowIABRuMYO3astmzZYjQGq+3atUsnT57U2LFjjcYxduxYffbZZzpw4IDROAAEtnfffVfl5eUBUbMOHz6svLw8o3FYqaqqSjk5OcZzP3r0aEnS1q1bjcYBILC5XC5t27bNeM0aMWKEWrVqpezsbKNxWC07O1sjR45UeHi4sRg6duyovn37Bl3uAXgvOztbw4YNU2RkpLEYkpKSNGDAgKB7TSo7O1vt27fX1VdfbSwGh8OhsWPH0i/QYjHU8KPCwkKlpKQoNDTUaBwdOnTQ8ePHg+qdt42nNnbs2NFoHB06dJCkoDvVEoB3CgsLJVGzTCguLpbb7Tae+5iYGMXGxgZV7gF4r7S0VPX19cZr1gUXXKDExMSgq1lFRUXGcy+d6tfBlnsA3issLKRmGVJUVKQOHToYuUzkVwVj7hE8GGr4UXl5uaKjo02HoZiYGLndblVWVpoOxTLl5eUKDQ01cq3br4qNjZUknThxwmgcAAJbeXm5JBnvGTExMZKCq2YFSu6lUz0jmHIPwHuBVLNiYmKCrmYFyvM7+gUATwRKzaJfmBMbG6uqqiq5XC7ToQA+x1DDj9xut0JCzKe4MYZguq9DY+5NT8WDMfcAvNdYI0z3jGCsWYGS+8YYgin3ALxHzTIrkJ7fBVvuAXiPmmVOIOVeCq7ndwge5o8wNCkoKNCGDRv00EMPaeTIkUpMTJTD4ZDD4dCsWbNMh9fikX8AdkLNMofcA7ATapY55B6AnVCzzCH3gPfCTAeA/0lOTjYdQlAj/wDshJplDrkHYCfULHPIPQA7oWaZQ+4B73GmRoDq1KmThg0bZjqMoEX+AdgJNcsccg/ATqhZ5pB7AHZCzTKH3AOe4UyNAPLQQw8pLS1NaWlpSk5O1oEDB9SlSxfTYQUN8g/ATqhZ5pB7AHZCzTKH3AOwE2qWOeQe8B5DjQDyyCOPmA4hqJF/AHZCzTKH3AOwE2qWOeQegJ1Qs8wh94D3uPwUAAAAAAAAAACwBYYaAAAAAAAAAADAFhhqAAAAAAAAAAAAW/DZUKO4uFh333230tPT1blzZ0VHRys8PFzJyckaOnSoVqxYIbfb7avlAAA2Rb8AAHiCfgEA8BQ9AwCCi89uFH7kyBE98cQTp20vKCjQm2++qTfffFPbt2/Xiy++6KslAQA2RL8AAHiCfgEA8BQ9AwCCi8+GGiEhIerRo4f69eunCy+8UHFxcTp58qT27Nmj9evXy+1266WXXtKPf/xj9evXz1fLAgBshn4BAPAE/QIA4Cl6BgAEF59dfuryyy9Xbm6uHn30UaWlpSk6OlrR0dH67ne/q/bt2zftt3nzZl8tCQCwIfoFAMAT9AsAgKfoGQAQXDw+U+PkyZPKz8//1v8vKSnRnXfeqW3btp3x++Tl5Z3x+/hUTY20ZEnzbSUlUlWVJctXVFQE1DUbv/jiC0VHR1uzmOHcFxcXW7KOp44dO2bd730LUlVVRd4MSU1NPeevtWO/MFyyVFRUZM1CHiooKLAs9y7X6bl3uSSrDv0jR45Ys5AH3G63ysrKgub33pfoF+acT7+QztwzArJfuGq0pH/zA6fkWImqQq05cA4fPmzJOp5wu906ceKEZbmPrI48LfeRVZGWHvsNDQ2WrXU2NTU1lj52V43rtPy7SlzKr7JX7aVfmOPPfiEFZs8wzeVymQ6hSV1dneU1q/+S/s22HSs5ptCqUEvWrwqwP6jz8/MVFuazi/Wckenc+wr9wixPeobHv9ERERFn/Ibz588/a/OQpPDw8PNuZh4rLJTmzWu+raBASkqyZPk2bdqooKDAkrU80alTJ8XExFizmOHcJyQkWLKOp5KTk637vW9B8vPzyZsN2bFfGC5ZSkxMtGYhD7Vr186y3OflnZ773FzJqkO/srLSmoU84HA4FBsbGzS/975Ev7CvM/WMgOwXlYWat6L5gVMwoEBJUdYcOIH0orrD4VBMTIxluT/0xSHN290897su26U+nfpYsr506vI2gaJ169aW1r28wjzNe6V5/nP75Co1yV61l35hX3Z8jmFaaGjgvIjcqlUrS/NeWVipFfNWNNs2oGCAopKiLFk/MjJStbW1lqzlidTUVMuGGqZz7yv0i8Dnk7/KKisrtWHDhqbP09PT9dlnn6m+vl5ut1tpaWm+WAYAYHP0CwCAJ+gXAABP0TMAIPj4ZExXVlbW7LS2m266SRdffLEk6ZNPPtG///1vXywDALA5+gUAwBP0CwCAp+gZABB8fDLUaNeuneLi4lRaWipJWrRokQoKClRfX68XX3xRNTU1vlgGAGBz9AsAgCfoFwAAT9EzACD4+OTyU2FhYbr33nubPi8uLtbjjz+uJ598Uu3bt1ffvn19sQwAwOboFwAAT9AvAACeomcAQPDx2V1i7rnnHkVHR+uZZ57R559/rrZt22r06NF6/PHHNWHCBF8t06Lt2rVL+/fvb/q8qKio6eP9+/dr2bJlzfafNWuWRZEFB/IPWIN+4RvULHPIPWAN+oVvULPMIfeAdegZ54+aZQ65B7zns6GGJM2ZM0dz5sw5bfuOHTt8uUyL9fzzz2v58uXf+H85OTnKyclpto0i5lvkH7AO/eL8UbPMIfeAdegX54+aZQ65B6xFzzg/1CxzyD3gPZ9cfgoAAAAAAAAAAMDfGGoEkGXLlsntdnv8D75F/gHYCTXLHHIPwE6oWeaQewB2Qs0yh9wD3mOoAQAAAAAAAAAAbIGhBgAAAAAAAAAAsAWGGgAAAAAAAAAAwBYYagAAAAAAAAAAAFtgqOFHISEhqq+vNx1GUwyhoaGGI7FOSEiIXC6X8RsoNeY+JIRDDcC3a6wRpntGsPYLyXzuG2OgXwA4k0CrWcHUL6TAen5HvwBwNoFUs+gXZjTG4HA4DEcC+B5/CflRXFycysrKTIeh0tJShYWFKTIy0nQolomNjVVDQ4MqKiqMxlFaWirp1O8CAHybxhphumcEY82KjY2VZD730qn8B1PuAXgvUPqFFJw1KzY2ltwDsI1Aek0q2GpWIPWL6OjooBsqITgw1PCjlJQUffHFF6qurjYax759+9S+ffugmsympKRIkj755BOjcTSuf9FFFxmNA0BgC5SatW/fPklS+/btjcZhpbZt26p169bGc3/48GFVVFQEVe4BeC8mJkZt2rQxXrOOHz+u48ePB13NSklJMZ57t9utTz75JOhyD8B7gVCzpP+9JhVMUlJS9N///ld1dXVG46BfoCVjqOFHo0ePVmVlpTZv3mwshoaGBq1evVpjxowxFoMJ/fv3V0JCglavXm00jlWrViktLY2hBoAz+r//+z+1b98+IGrWlVdeqS5duhiNw0rh4eEaPny48dyvXr1arVq10ogRI4zGASCwORwOjRo1ynjNWrt2rSTppptuMhqH1UaPHq3s7Gyj77798MMP9emnnwbd8zsA3hs9erR27typwsJCYzHs379fe/fuDbqaNXr0aJWWlmrbtm3GYqivr9fatWuDLvcIHgw1/OjSSy9Vz549lZWVZSyGd955R4cOHVJmZqaxGExo1aqVJkyYIKfTaey+GhUVFdq0aVPQ5R6A90JCQjRx4kQ5nU41NDQYieHkyZN67bXXgrJmTZo0SW+//bYOHjxoLAan06mhQ4cG3an5ALyXmZmpvXv3Np1dZ4LT6dSgQYPUrl07YzGYkJGRodraWq1fv95YDE6nU3FxcbrhhhuMxQDAHsaPHy+32900iDbB6XQqMjJSI0eONBaDCb1791a3bt3kdDqNxbBz504VFRUF5fM7BAeGGn42ZcoUrV69Wm+88Ybla584cUJ33nmn2rdvrwEDBli+vmlTpkzRZ599pl/96leWr93Q0KCf/vSnqqmpUUZGhuXrA7CfyZMn68iRI3rkkUcsX9vtdmvBggUqLy8Pyj96R48erQsuuEA/+clPVFtba/n6y5cv165duzR58mTL1wZgPyNHjlR0dLTmzp2rkydPWr7+ypUr9eabbwZlzerYsaMGDhyohx9+WIcOHbJ8/X/961/63e9+p/Hjxys8PNzy9QHYS7t27ZSenq5f/OIXOnDggOXr5+bm6te//rXGjBkTVPd4lU6dWTllyhT99a9/1fbt2y1fv6SkRHfffbcuvvhiXX311ZavD1iBoYaf3XXXXRo+fLjGjRunTZs2WbbuiRMnNHLkSOXm5mrdunVBeVOg9PR0LVy4UPfee68WL15s2RkbLpdLt9xyi1588UUtX748qC7jAuDcDRgwQL/85S/16KOPauHChZbVrIaGBs2fP1/PPvusli5dqh49eliybiCJiYnRmjVrtGXLFmVmZqqmpsaytZctW6bZs2fr5ptv1vTp0y1bF4B9XXDBBVq3bp3eeustjRs3ztL7961cuVLTpk3TtGnT9MMf/tCydQPJihUrVF9fr8GDB1s62NizZ4/S09PVtWtXPf3005atC8DeXnzxRbVq1UrXX3+9Pv/8c8vW/eijjzR48GBddNFF+u1vf2vZuoHkgQce0KBBg3TTTTdZehmq4uJiDR06VPn5+VqzZk1Q3V8XwYWhhp+Fh4dr1apVGjZsmG688UZdc801evLJJ/Xpp5/69J1VLpdLx48f17p16zRt2jR16NBBH330kbKzs5WWluazdezm4YcfbhpsdO/eXffff7/++c9/qqKiwmcvGLrdbpWVlenvf/+75s6dq44dO+qFF17Q8uXLNWPGDJ+sASA43HvvvU2Dja5du+qee+7Re++9p/Lycp/WrBMnTignJ0c//elP1alTJ/32t7/V0qVLdfPNN/tkDTsaMWKE1q1bp82bN6t9+/b64Q9/qC1btqi0tNRnlwRzu92qqqrSRx99pJ///Ofq2bOnZs+erR/96Ef6wx/+oJAQ/iwD4JkhQ4Zow4YN+vvf/6727dtr9uzZ2rRpk0pKSnxes/Ly8vTYY4+pd+/emjJliqZOnaqXXnopKN80JUmdO3fWjh07VFdXp27dumns2LH6y1/+omPHjqm+vt5n69TW1urgwYP64x//qPT0dF199dW6+OKLlZ2dzaUKAXisQ4cO2rFjh8LCwnTppZdq1KhRWr58uY4ePerTm1jX1tbq0KFD+tOf/qRhw4bpqquu0oUXXqitW7cqMTHRZ+vYSUREhNatW6frrrtO6enp+s53vqNf//rX+uyzz3z+emBRUZFWr16tKVOmqFOnTjpw4IC2bt2qq666ymfrAIEmzHQAwaBxsLFmzRplZWXpwQcf1IIFCySduveDL17E+Oq7Snv27KkFCxZo+vTpnCWgU4ONgQMHauXKlVq6dKl++ctfSpJCQ0MVFnb+h0BdXV3Tk8cOHTpo8uTJmjp1alAPkwCcu3vvvVfXXnutXn31Vb344otNl9DzR8266KKLlJGRoalTp+raa6897+9tdyNGjNAHH3ygv/71r8rKytILL7wg6dTp4764zIfL5Wp6watNmzYaO3asFi1apNGjRzPQAOC1IUOGaM+ePfrLX/6irKwsLVu2TJJ/alZUVJRGjx6thx56SGPHjg3agUajzp0765133tHLL78sp9PZ7I1M4eHh5/2uWLfb3XQ5xNDQUKWnp2vp0qWaPHmyoqOjz+t7Awg+HTp00Ntvv61XXnlFWVlZmjVrVtP/+bpmhYSE6Prrr9fvfvc7TZkyRbGxsef1ve2ucbCxevVqZWVl6d5779Udd9whyTevB34199Kpe3k88MADmjZtmjp16nRe3xsIdA63h2/9zM/PV2pqqr/j8a3CQunrN68rKJCSkszE8/+Vl5dr165dKioq0okTJ8767tvi4mIlJCSccZ+IiAjFx8friiuu0GWXXebLcM9NgOa+rq5OOTk5Onr0qEpLS+Vyuc64vye5DwsLU3x8vDp37qy0tDRemPIhW9Yd2PLnFqAlS/X19frHP/6hw4cP+7RmxcXFKTU1Vddcc43xmpWXJ11+efNtubmS6atgud1u7d27V59++qlKSko8utfG2fIfEhKi2NhYJScna+DAgYqIiPBlyF4L1N/7c2HHuoNT7PazK6wsVLsnmx84BXcVKCnK7IHjdrv1n//8Rx9//LHPapbD4VBsbKzatWungQMHGr8ees4XORr40sBm23bN3qUBnczfO/DgwYN6//33VVJSoqqqqrPu70m/jo6OVnx8vL7zne8ExLuc8wrzdPnvmzfs3Dm56pFkr8tW2q3m4H/42fnO4cOH9d5776mkpESVlZVn3d+TmtWmTRvFx8erf//+avf1PzANqCys1JPtnmy27a6CuxSVFGUoolPKysq0a9cuHT9+3KOz8b15PbBXr1665JJLfBnuOQnU3HuLmhP4OFPDgOjoaI0cOdLj/TmQfKfxWpKeIvcATAoLC9N1113n8f7ULN9xOBzq3bu3evfu7fHXkH8ApjgcDvXs2VM9e/b0+GuoWb7TsWNHdezY0eP9yT0Ak1JSUpSSkuLx/tQs34mNjdVNN93k8f7kHvh2vKUcAAAAAAAAAADYAkMNAAAAAAAAAABgCww1AAAAAAAAAACALTDUAAAAAAAAAAAAtsBQAwAAAAAAAAAA2AJDDQAAAAAAAAAAYAsMNQAAAAAAAAAAgC0w1AAAAAAAAAAAALbAUAMAAAAAAAAAANgCQw0AAAAAAAAAAGALDDUAAAAAAAAAAIAtMNQAAAAAAAAAAAC2wFADAAAAAAAAAADYAkMNAAAAAAAAAABgCww1AAAAAAAAAACALTDUAAAAAAAAAAAAtsBQAwAAAAAAAAAA2AJDDQAAAAAAAAAAYAsMNQAAAAAAAAAAgC0w1AAAAAAAAAAAALYQZjoAyxUVmY7AezU1UmGh6Si8Y8c8A8BX2LGM2bFdFBd/8za7PQ7Jfvm34+84EIiKqux5MNW4alRYaZ+iVXKy5LRtB0oPKOGCBAPRnB9XjUt5hXmmw/DKZ8WfmQ4BAM5LVVGV6RC85qpxqbKw0nQYXrFjnmFPwTfUuPxy0xF4b8kSad4801EAQFChXZgzcKDpCM5NS8k/AO9c/nsbNgxJS/ov0bwV9i5a09dONx3COVnSf4nmvWLv3AOA3fz+8t+bDsFr/Zf014p5K0yHAQQkLj8FAAAAAAAAAABsweF2u92mgwAAAAAAAAAAADgbztQAAAAAAAAAAAC2wFADAAAAAAAAAADYAkMNAAAAAAAAAABgCww1AAAAAAAAAACALTDUAAAAAAAAAAAAtsBQAwAAAAAAAAAA2AJDDQAAAAAAAAAAYAsMNQAAAAAAAAAAgC0w1AAAAAAAAAAAALbw/wBwGshgI0MTxgAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Input: a = 11, b = 10 => Product: 6\n" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.patches as patches\n", + "\n", + "def draw_vedic_2x2(a1, a0, b1, b0):\n", + " fig, axes = plt.subplots(1, 4, figsize=(16, 4))\n", + " fig.suptitle(\"Urdhva Tiryagbhyam 2x2 Multiplication\", fontsize=14, fontweight='bold')\n", + " col_a0, col_a1 = 1, 2\n", + " col_b0, col_b1 = 1, 2\n", + " row_a, row_b = 0, 1\n", + " steps = [\n", + " {\"title\": \"Step 1: Vertical (LSB)\\nBit 0 = a0 * b0\", \"highlight\": [(col_a0, row_a, 'red'), (col_b0, row_b, 'red')], \"bit\": 0, \"val\": a0 & b0},\n", + " {\"title\": \"Step 2: Crosswise\\nBit 1 = (a1*b0) ^ (a0*b1)\", \"highlight\": [(col_a1, row_a, 'blue'), (col_b0, row_b, 'blue'), (col_a0, row_a, 'blue'), (col_b1, row_b, 'blue')], \"bit\": 1, \"val\": (a1 & b0) ^ (a0 & b1)},\n", + " {\"title\": \"Step 3: Crosswise + MSB Vertical\\nBit 2 = (a1*b0 & a0*b1) ^ (a1*b1)\", \"highlight\": [(col_a1, row_a, 'green'), (col_b0, row_b, 'green'), (col_a0, row_a, 'green'), (col_b1, row_b, 'green'), (col_a1, row_a, 'green'), (col_b1, row_b, 'green')], \"bit\": 2, \"val\": ((a1 & b0) & (a0 & b1)) ^ (a1 & b1)},\n", + " {\"title\": \"Step 4: Vertical (MSB)\\nBit 3 = (a1*b0 & a0*b1) & (a1*b1)\", \"highlight\": [(col_a1, row_a, 'purple'), (col_b1, row_b, 'purple')], \"bit\": 3, \"val\": ((a1 & b0) & (a0 & b1)) & (a1 & b1)}\n", + " ]\n", + " for ax, step in zip(axes, steps):\n", + " ax.set_xlim(0, 4); ax.set_ylim(-0.5, 2.5); ax.set_aspect('equal'); ax.axis('off')\n", + " ax.set_title(step[\"title\"], fontsize=11)\n", + " for x in range(5): ax.axvline(x, color='lightgray', lw=0.5)\n", + " for y in range(-1, 3): ax.axhline(y, color='lightgray', lw=0.5)\n", + " ax.text(col_a1, row_a, str(a1), fontsize=20, ha='center', va='center', bbox=dict(boxstyle='round', facecolor='white', edgecolor='black'))\n", + " ax.text(col_a0, row_a, str(a0), fontsize=20, ha='center', va='center', bbox=dict(boxstyle='round', facecolor='white', edgecolor='black'))\n", + " ax.text(col_b1, row_b, str(b1), fontsize=20, ha='center', va='center', bbox=dict(boxstyle='round', facecolor='white', edgecolor='black'))\n", + " ax.text(col_b0, row_b, str(b0), fontsize=20, ha='center', va='center', bbox=dict(boxstyle='round', facecolor='white', edgecolor='black'))\n", + " ax.text(0.2, row_a, \"a\", fontsize=14, ha='right', va='center', fontweight='bold')\n", + " ax.text(0.2, row_b, \"b\", fontsize=14, ha='right', va='center', fontweight='bold')\n", + " for (x, y, c) in step[\"highlight\"]:\n", + " ax.add_patch(patches.Rectangle((x-0.5, y-0.5), 1, 1, lw=3, edgecolor=c, facecolor='none'))\n", + " ax.text(3.5, 1.5, f\"Bit {step['bit']} = {step['val']}\", fontsize=12, ha='right', bbox=dict(boxstyle='round', facecolor='lightyellow'))\n", + " plt.tight_layout()\n", + " plt.show()\n", + " product = (a0 & b0) | (((a1 & b0) ^ (a0 & b1)) << 1) | ((((a1 & b0) & (a0 & b1)) ^ (a1 & b1)) << 2) | ((((a1 & b0) & (a0 & b1)) & (a1 & b1)) << 3)\n", + " print(f\"Input: a = {a1}{a0}, b = {b1}{b0} => Product: {product}\")\n", + "\n", + "draw_vedic_2x2(1, 1, 1, 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pb29Weo2eY0p" + }, + "source": [ + "## 3. RTL Design & Verification" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hXSTgBZWeY0p", + "outputId": "948be787-6377-4452-dd01-769f44eee12e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Overwriting tapeout_vedic_mac_16.v\n" + ] + } + ], + "source": [ + "%%writefile tapeout_vedic_mac_16.v\n", + "module vedic_2x2(input [1:0] a, b, output [3:0] out);\n", + " assign out[0] = a[0] & b[0];\n", + " assign out[1] = (a[1] & b[0]) ^ (a[0] & b[1]);\n", + " assign out[2] = ((a[1] & b[0]) & (a[0] & b[1])) ^ (a[1] & b[1]);\n", + " assign out[3] = ((a[1] & b[0]) & (a[0] & b[1])) & (a[1] & b[1]);\n", + "endmodule\n", + "\n", + "module vedic_4x4(input [3:0] a, b, output [7:0] out);\n", + " wire [3:0] q0,q1,q2,q3;\n", + " vedic_2x2 m0(a[1:0],b[1:0],q0);\n", + " vedic_2x2 m1(a[3:2],b[1:0],q1);\n", + " vedic_2x2 m2(a[1:0],b[3:2],q2);\n", + " vedic_2x2 m3(a[3:2],b[3:2],q3);\n", + " assign out = q0 + (q1<<2) + (q2<<2) + (q3<<4);\n", + "endmodule\n", + "\n", + "module vedic_8x8(input [7:0] a, b, output [15:0] out);\n", + " wire [7:0] q0,q1,q2,q3;\n", + " vedic_4x4 m0(a[3:0],b[3:0],q0);\n", + " vedic_4x4 m1(a[7:4],b[3:0],q1);\n", + " vedic_4x4 m2(a[3:0],b[7:4],q2);\n", + " vedic_4x4 m3(a[7:4],b[7:4],q3);\n", + " assign out = q0 + (q1<<4) + (q2<<4) + (q3<<8);\n", + "endmodule\n", + "\n", + "module vedic_16x16(input [15:0] a, b, output [31:0] out);\n", + " wire [15:0] q0,q1,q2,q3;\n", + " vedic_8x8 m0(a[7:0],b[7:0],q0);\n", + " vedic_8x8 m1(a[15:8],b[7:0],q1);\n", + " vedic_8x8 m2(a[7:0],b[15:8],q2);\n", + " vedic_8x8 m3(a[15:8],b[15:8],q3);\n", + " assign out = q0 + (q1<<8) + (q2<<8) + (q3<<16);\n", + "endmodule\n", + "\n", + "module tapeout_vedic_mac_16(\n", + " input clk, nrst, enable,\n", + " input [15:0] A, B,\n", + " input [31:0] C,\n", + " input [7:0] security_key,\n", + " output reg [31:0] Z\n", + ");\n", + " wire [31:0] mult_raw, secured_res;\n", + " vedic_16x16 mult(A, B, mult_raw);\n", + " assign secured_res = (security_key == 8'h47) ? mult_raw + C : 32'h0;\n", + " always @(posedge clk or negedge nrst)\n", + " if (!nrst) Z <= 0;\n", + " else if (enable) Z <= secured_res;\n", + "endmodule" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BMyPrLwVeY0q", + "outputId": "510e88a6-b6d0-4a57-ddf7-71444fc0d2b8" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Overwriting tb_vedic_mac_16.v\n" + ] + } + ], + "source": [ + "%%writefile tb_vedic_mac_16.v\n", + "`timescale 1ns/1ps\n", + "module tb;\n", + " reg clk=0, nrst=0, enable=0;\n", + " reg [15:0] A, B;\n", + " reg [31:0] C;\n", + " reg [7:0] security_key;\n", + " wire [31:0] Z;\n", + " tapeout_vedic_mac_16 dut(.*);\n", + " always #5 clk = ~clk;\n", + " integer err=0;\n", + " task check(input [31:0] exp, input [8*30:1] msg);\n", + " begin @(posedge clk); #1;\n", + " if (Z !== exp) begin $display(\"FAIL %s: got %h, exp %h\", msg, Z, exp); err=err+1; end\n", + " else $display(\"PASS %s: %h\", msg, Z);\n", + " end\n", + " endtask\n", + " initial begin\n", + " $dumpfile(\"tb.vcd\"); $dumpvars;\n", + " security_key = 8'h47;\n", + " repeat(2) @(posedge clk); nrst=1; @(posedge clk);\n", + " enable=1; A=5; B=6; C=0; check(30, \"5*6+0\");\n", + " A=10; B=20; C=100; check(300, \"10*20+100\");\n", + " A=16'hFFFF; B=16'hFFFF; C=1; check(32'hFFFE0002, \"max*max+1\");\n", + " security_key = 8'h00; check(0, \"Wrong key -> 0\");\n", + " security_key = 8'h47; check(32'hFFFE0002, \"Key restored\");\n", + " enable=0; @(posedge clk); #1;\n", + " if (Z !== 32'hFFFE0002) begin $display(\"FAIL Enable=0 hold\"); err=err+1; end\n", + " else $display(\"PASS Enable=0 holds value\");\n", + " nrst=0; #2;\n", + " if (Z !== 0) begin $display(\"FAIL Reset\"); err=err+1; end\n", + " else $display(\"PASS Reset works\");\n", + " $display(\"%s\", err ? \"FAILED\" : \"ALL TESTS PASSED\");\n", + " $finish;\n", + " end\n", + "endmodule" + ] + }, + { + "cell_type": "code", + "source": [ + "!iverilog -o tb.vvp tapeout_vedic_mac_16.v tb_vedic_mac_16.v && vvp tb.vvp" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5FuSnEuPkYNY", + "outputId": "557876ec-c9db-4534-9807-cf710a968a0f" + }, + "execution_count": 35, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "VCD info: dumpfile tb.vcd opened for output.\n", + "PASS 5*6+0: 0000001e\n", + "PASS 10*20+100: 0000012c\n", + "PASS max*max+1: fffe0002\n", + "PASS Wrong key -> 0: 00000000\n", + "PASS Key restored: fffe0002\n", + "PASS Enable=0 holds value\n", + "PASS Reset works\n", + "ALL TESTS PASSED\n", + "tb_vedic_mac_16.v:33: $finish called at 88000 (1ps)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "A50BSu9JeY0r" + }, + "source": [ + "## 4. OpenLane Physical Design Flow" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "id": "ZAf2x0GqeY0r" + }, + "outputs": [], + "source": [ + "from openlane.config import Config\n", + "from openlane.steps import Step\n", + "from openlane.state import State\n", + "import IPython.display as ipd\n", + "\n", + "Config.interactive(\n", + " \"tapeout_vedic_mac_16\",\n", + " PDK=\"sky130A\",\n", + " CLOCK_PORT=\"clk\",\n", + " CLOCK_NET=\"clk\",\n", + " CLOCK_PERIOD=10.0,\n", + " PRIMARY_GDSII_STREAMOUT_TOOL=\"klayout\",\n", + ")\n", + "\n", + "state = State()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "id": "GLfeUrOueY0r" + }, + "outputs": [], + "source": [ + "def run_step(step_name, kwargs=None, show=True):\n", + " global state\n", + " step_cls = Step.factory.get(step_name)\n", + " k = {'state_in': state}\n", + " if kwargs: k.update(kwargs)\n", + " step = step_cls(**k)\n", + " step.start()\n", + " state = step.state_out\n", + " if show: ipd.display(step)\n", + " return step" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "jxo0gSC5eY0r", + "outputId": "ee5e26f1-5819-4de9-c734-01a794c26ccb" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running Synthesis...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────────────── \u001b[0mSynthesis\u001b[92m ────────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────────────── Synthesis ────────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[09:59:38]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'Yosys.Synthesis'\u001b[0m… \u001b]8;id=8494;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=291976;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[09:59:38] VERBOSE  Running 'Yosys.Synthesis'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[09:59:38]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=725786;file:///content/openlane_run/18-yosys-synthesis/yosys-synthesis.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=154165;file:///content/openlane_run/18-yosys-synthesis/yosys-synthesis.log\u001b\\\u001b[1;36m18\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=725786;file:///content/openlane_run/18-yosys-synthesis/yosys-synthesis.log\u001b\\\u001b[95m-yosys-synthesis/yosys-synthesis.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=362591;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=908441;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[09:59:38] VERBOSE  Logging subprocess to openlane_run/18-yosys-synthesis/yosys-synthesis.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[35m/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/\u001b[0m\u001b[95mbash\u001b[0m: warning: setlocale: LC_ALL: cannot change locale \n", + "\u001b[1m(\u001b[0men_US.UTF-\u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash: warning: setlocale: LC_ALL: cannot change locale \n",
+              "(en_US.UTF-8)                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[35m/\u001b[0m\u001b[95m----------------------------------------------------------------------------\u001b[0m\\ \n" + ], + "text/html": [ + "
/----------------------------------------------------------------------------\\                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| | \n" + ], + "text/html": [ + "
|                                                                            |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| yosys -- Yosys Open SYnthesis Suite | \n" + ], + "text/html": [ + "
|  yosys -- Yosys Open SYnthesis Suite                                       |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| | \n" + ], + "text/html": [ + "
|                                                                            |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| Copyright \u001b[1m(\u001b[0mC\u001b[1m)\u001b[0m \u001b[1;36m2012\u001b[0m - \u001b[1;36m2020\u001b[0m Claire Xenia Wolf \u001b[1m<\u001b[0m\u001b[1;95mclaire\u001b[0m\u001b[39m@yosyshq.com\u001b[0m\u001b[1m>\u001b[0m | \n" + ], + "text/html": [ + "
|  Copyright (C) 2012 - 2020  Claire Xenia Wolf <claire@yosyshq.com>         |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| | \n" + ], + "text/html": [ + "
|                                                                            |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| Permission to use, copy, modify, and/or distribute this software for any | \n" + ], + "text/html": [ + "
|  Permission to use, copy, modify, and/or distribute this software for any  |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| purpose with or without fee is hereby granted, provided that the above | \n" + ], + "text/html": [ + "
|  purpose with or without fee is hereby granted, provided that the above    |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| copyright notice and this permission notice appear in all copies. | \n" + ], + "text/html": [ + "
|  copyright notice and this permission notice appear in all copies.         |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| | \n" + ], + "text/html": [ + "
|                                                                            |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| THE SOFTWARE IS PROVIDED \u001b[32m\"AS IS\"\u001b[0m AND THE AUTHOR DISCLAIMS ALL WARRANTIES | \n" + ], + "text/html": [ + "
|  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES  |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | \n" + ], + "text/html": [ + "
|  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF          |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | \n" + ], + "text/html": [ + "
|  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR   |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | \n" + ], + "text/html": [ + "
|  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | \n" + ], + "text/html": [ + "
|  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN     |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | \n" + ], + "text/html": [ + "
|  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | \n" + ], + "text/html": [ + "
|  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.            |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "| | \n" + ], + "text/html": [ + "
|                                                                            |                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\\----------------------------------------------------------------------------\u001b[35m/\u001b[0m \n" + ], + "text/html": [ + "
\\----------------------------------------------------------------------------/                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Yosys \u001b[1;36m0.38\u001b[0m \u001b[1m(\u001b[0mgit sha1 543faed9c8c, clang++ \u001b[1;36m17.0\u001b[0m.\u001b[1;36m6\u001b[0m -fPIC -Os\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
Yosys 0.38 (git sha1 543faed9c8c, clang++ 17.0.6 -fPIC -Os)                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Loaded SDC plugin \n" + ], + "text/html": [ + "
Loaded SDC plugin                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mTCL: yosys -import\u001b[1m]\u001b[0m Command name collision: found pre-existing command `cd' -> skip. \n" + ], + "text/html": [ + "
[TCL: yosys -import] Command name collision: found pre-existing command `cd' -> skip.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mTCL: yosys -import\u001b[1m]\u001b[0m Command name collision: found pre-existing command `eval' -> skip. \n" + ], + "text/html": [ + "
[TCL: yosys -import] Command name collision: found pre-existing command `eval' -> skip.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mTCL: yosys -import\u001b[1m]\u001b[0m Command name collision: found pre-existing command `exec' -> skip. \n" + ], + "text/html": [ + "
[TCL: yosys -import] Command name collision: found pre-existing command `exec' -> skip.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mTCL: yosys -import\u001b[1m]\u001b[0m Command name collision: found pre-existing command `read' -> skip. \n" + ], + "text/html": [ + "
[TCL: yosys -import] Command name collision: found pre-existing command `read' -> skip.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mTCL: yosys -import\u001b[1m]\u001b[0m Command name collision: found pre-existing command `trace' -> skip. \n" + ], + "text/html": [ + "
[TCL: yosys -import] Command name collision: found pre-existing command `trace' -> skip.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m1\u001b[0m. Executing Liberty frontend: \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/\u001b[0m\u001b[95msky130_fd_sc_hd__tt_025C_1v80.lib\u001b[0m\n" + ], + "text/html": [ + "
1. Executing Liberty frontend: /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Imported \u001b[1;36m428\u001b[0m cell types from liberty file. \n" + ], + "text/html": [ + "
Imported 428 cell types from liberty file.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m2\u001b[0m. Executing Verilog-\u001b[1;36m2005\u001b[0m frontend: .\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m \n" + ], + "text/html": [ + "
2. Executing Verilog-2005 frontend: ./tapeout_vedic_mac_16.v                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Parsing SystemVerilog input from `.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m' to AST representation. \n" + ], + "text/html": [ + "
Parsing SystemVerilog input from `./tapeout_vedic_mac_16.v' to AST representation.                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\vedic_2x2'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\vedic_2x2'.                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\vedic_4x4'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\vedic_4x4'.                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\vedic_8x8'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\vedic_8x8'.                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\vedic_16x16'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\vedic_16x16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\tapeout_vedic_mac_16'.                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Successfully finished Verilog frontend. \n" + ], + "text/html": [ + "
Successfully finished Verilog frontend.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m3\u001b[0m. Executing HIERARCHY pass \u001b[1m(\u001b[0mmanaging design hierarchy\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
3. Executing HIERARCHY pass (managing design hierarchy).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m3.1\u001b[0m. Analyzing design hierarchy.. \n" + ], + "text/html": [ + "
3.1. Analyzing design hierarchy..                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Top module: \\tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Top module:  \\tapeout_vedic_mac_16                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_16x16 \n" + ], + "text/html": [ + "
Used module:     \\vedic_16x16                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_8x8 \n" + ], + "text/html": [ + "
Used module:         \\vedic_8x8                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_4x4 \n" + ], + "text/html": [ + "
Used module:             \\vedic_4x4                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_2x2 \n" + ], + "text/html": [ + "
Used module:                 \\vedic_2x2                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m3.2\u001b[0m. Analyzing design hierarchy.. \n" + ], + "text/html": [ + "
3.2. Analyzing design hierarchy..                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Top module: \\tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Top module:  \\tapeout_vedic_mac_16                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_16x16 \n" + ], + "text/html": [ + "
Used module:     \\vedic_16x16                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_8x8 \n" + ], + "text/html": [ + "
Used module:         \\vedic_8x8                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_4x4 \n" + ], + "text/html": [ + "
Used module:             \\vedic_4x4                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_2x2 \n" + ], + "text/html": [ + "
Used module:                 \\vedic_2x2                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m unused modules. \n" + ], + "text/html": [ + "
Removed 0 unused modules.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell tapeout_vedic_mac_16.mult \u001b[1m(\u001b[0mvedic_16x16\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell tapeout_vedic_mac_16.mult (vedic_16x16).                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_16x16.m3 \u001b[1m(\u001b[0mvedic_8x8\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_16x16.m3 (vedic_8x8).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_16x16.m2 \u001b[1m(\u001b[0mvedic_8x8\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_16x16.m2 (vedic_8x8).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_16x16.m1 \u001b[1m(\u001b[0mvedic_8x8\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_16x16.m1 (vedic_8x8).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_16x16.m0 \u001b[1m(\u001b[0mvedic_8x8\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_16x16.m0 (vedic_8x8).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_8x8.m3 \u001b[1m(\u001b[0mvedic_4x4\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_8x8.m3 (vedic_4x4).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_8x8.m2 \u001b[1m(\u001b[0mvedic_4x4\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_8x8.m2 (vedic_4x4).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_8x8.m1 \u001b[1m(\u001b[0mvedic_4x4\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_8x8.m1 (vedic_4x4).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_8x8.m0 \u001b[1m(\u001b[0mvedic_4x4\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_8x8.m0 (vedic_4x4).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_4x4.m3 \u001b[1m(\u001b[0mvedic_2x2\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_4x4.m3 (vedic_2x2).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_4x4.m2 \u001b[1m(\u001b[0mvedic_2x2\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_4x4.m2 (vedic_2x2).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_4x4.m1 \u001b[1m(\u001b[0mvedic_2x2\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_4x4.m1 (vedic_2x2).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping positional arguments of cell vedic_4x4.m0 \u001b[1m(\u001b[0mvedic_2x2\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Mapping positional arguments of cell vedic_4x4.m0 (vedic_2x2).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Renaming module tapeout_vedic_mac_16 to tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Renaming module tapeout_vedic_mac_16 to tapeout_vedic_mac_16.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m4\u001b[0m. Generating Graphviz representation of design. \n" + ], + "text/html": [ + "
4. Generating Graphviz representation of design.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing dot description to `\u001b[35m/content/openlane_run/18-yosys-synthesis/\u001b[0m\u001b[95mhierarchy.dot\u001b[0m'. \n" + ], + "text/html": [ + "
Writing dot description to `/content/openlane_run/18-yosys-synthesis/hierarchy.dot'.                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Dumping module tapeout_vedic_mac_16 to page \u001b[1;36m1\u001b[0m. \n" + ], + "text/html": [ + "
Dumping module tapeout_vedic_mac_16 to page 1.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m5\u001b[0m. Executing TRIBUF pass. \n" + ], + "text/html": [ + "
5. Executing TRIBUF pass.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m6\u001b[0m. Executing HIERARCHY pass \u001b[1m(\u001b[0mmanaging design hierarchy\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
6. Executing HIERARCHY pass (managing design hierarchy).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m6.1\u001b[0m. Analyzing design hierarchy.. \n" + ], + "text/html": [ + "
6.1. Analyzing design hierarchy..                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Top module: \\tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Top module:  \\tapeout_vedic_mac_16                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_16x16 \n" + ], + "text/html": [ + "
Used module:     \\vedic_16x16                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_8x8 \n" + ], + "text/html": [ + "
Used module:         \\vedic_8x8                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_4x4 \n" + ], + "text/html": [ + "
Used module:             \\vedic_4x4                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_2x2 \n" + ], + "text/html": [ + "
Used module:                 \\vedic_2x2                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m6.2\u001b[0m. Analyzing design hierarchy.. \n" + ], + "text/html": [ + "
6.2. Analyzing design hierarchy..                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Top module: \\tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Top module:  \\tapeout_vedic_mac_16                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_16x16 \n" + ], + "text/html": [ + "
Used module:     \\vedic_16x16                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_8x8 \n" + ], + "text/html": [ + "
Used module:         \\vedic_8x8                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_4x4 \n" + ], + "text/html": [ + "
Used module:             \\vedic_4x4                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Used module: \\vedic_2x2 \n" + ], + "text/html": [ + "
Used module:                 \\vedic_2x2                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m unused modules. \n" + ], + "text/html": [ + "
Removed 0 unused modules.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m7\u001b[0m. Executing PROC_CLEAN pass \u001b[1m(\u001b[0mremove empty switches from decision trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
7. Executing PROC_CLEAN pass (remove empty switches from decision trees).                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Cleaned up \u001b[1;36m0\u001b[0m empty switches. \n" + ], + "text/html": [ + "
Cleaned up 0 empty switches.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m8\u001b[0m. Executing PROC_RMDEAD pass \u001b[1m(\u001b[0mremove dead branches from decision trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
8. Executing PROC_RMDEAD pass (remove dead branches from decision trees).                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Marked \u001b[1;36m1\u001b[0m switch rules as full_case in process $proc$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m45\u001b[0m$\u001b[1;36m36\u001b[0m in module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Marked 1 switch rules as full_case in process $proc$./tapeout_vedic_mac_16.v:45$36 in module tapeout_vedic_mac_16. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m dead cases. \n" + ], + "text/html": [ + "
Removed a total of 0 dead cases.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m9\u001b[0m. Executing PROC_PRUNE pass \u001b[1m(\u001b[0mremove redundant assignments in processes\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
9. Executing PROC_PRUNE pass (remove redundant assignments in processes).                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m redundant assignments. \n" + ], + "text/html": [ + "
Removed 0 redundant assignments.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Promoted \u001b[1;36m0\u001b[0m assignments to connections. \n" + ], + "text/html": [ + "
Promoted 0 assignments to connections.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m10\u001b[0m. Executing PROC_INIT pass \u001b[1m(\u001b[0mextract init attributes\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
10. Executing PROC_INIT pass (extract init attributes).                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m11\u001b[0m. Executing PROC_ARST pass \u001b[1m(\u001b[0mdetect async resets in processes\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
11. Executing PROC_ARST pass (detect async resets in processes).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Found async reset \\nrst in `\\tapeout_vedic_mac_16.$proc$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m45\u001b[0m$\u001b[1;36m36\u001b[0m'. \n" + ], + "text/html": [ + "
Found async reset \\nrst in `\\tapeout_vedic_mac_16.$proc$./tapeout_vedic_mac_16.v:45$36'.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m12\u001b[0m. Executing PROC_ROM pass \u001b[1m(\u001b[0mconvert switches to ROMs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
12. Executing PROC_ROM pass (convert switches to ROMs).                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Converted \u001b[1;36m0\u001b[0m switches. \n" + ], + "text/html": [ + "
Converted 0 switches.                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m13\u001b[0m. Executing PROC_MUX pass \u001b[1m(\u001b[0mconvert decision trees to multiplexers\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
13. Executing PROC_MUX pass (convert decision trees to multiplexers).                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating decoders for process `\\tapeout_vedic_mac_16.$proc$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m45\u001b[0m$\u001b[1;36m36\u001b[0m'. \n" + ], + "text/html": [ + "
Creating decoders for process `\\tapeout_vedic_mac_16.$proc$./tapeout_vedic_mac_16.v:45$36'.                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m1\u001b[0m/\u001b[1;36m1\u001b[0m: $\u001b[1;36m0\u001b[0m\\Z\u001b[1m[\u001b[0m\u001b[1;92m31:0\u001b[0m\u001b[1m]\u001b[0m \n" + ], + "text/html": [ + "
1/1: $0\\Z[31:0]                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m14\u001b[0m. Executing PROC_DLATCH pass \u001b[1m(\u001b[0mconvert process syncs to latches\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
14. Executing PROC_DLATCH pass (convert process syncs to latches).                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m15\u001b[0m. Executing PROC_DFF pass \u001b[1m(\u001b[0mconvert process syncs to FFs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
15. Executing PROC_DFF pass (convert process syncs to FFs).                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating register for signal `\\tapeout_vedic_mac_16.\\Z' using process \n", + "`\\tapeout_vedic_mac_16.$proc$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m45\u001b[0m$\u001b[1;36m36\u001b[0m'. \n" + ], + "text/html": [ + "
Creating register for signal `\\tapeout_vedic_mac_16.\\Z' using process                                              \n",
+              "`\\tapeout_vedic_mac_16.$proc$./tapeout_vedic_mac_16.v:45$36'.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "created $adff cell `$procdff$\u001b[1;36m40\u001b[0m' with positive edge clock and negative level reset. \n" + ], + "text/html": [ + "
created $adff cell `$procdff$40' with positive edge clock and negative level reset.                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m16\u001b[0m. Executing PROC_MEMWR pass \u001b[1m(\u001b[0mconvert process memory writes to cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
16. Executing PROC_MEMWR pass (convert process memory writes to cells).                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m17\u001b[0m. Executing PROC_CLEAN pass \u001b[1m(\u001b[0mremove empty switches from decision trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
17. Executing PROC_CLEAN pass (remove empty switches from decision trees).                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Found and cleaned up \u001b[1;36m1\u001b[0m empty switch in `\\tapeout_vedic_mac_16.$proc$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m45\u001b[0m$\u001b[1;36m36\u001b[0m'. \n" + ], + "text/html": [ + "
Found and cleaned up 1 empty switch in `\\tapeout_vedic_mac_16.$proc$./tapeout_vedic_mac_16.v:45$36'.               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removing empty process `tapeout_vedic_mac_16.$proc$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m45\u001b[0m$\u001b[1;36m36\u001b[0m'. \n" + ], + "text/html": [ + "
Removing empty process `tapeout_vedic_mac_16.$proc$./tapeout_vedic_mac_16.v:45$36'.                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Cleaned up \u001b[1;36m1\u001b[0m empty switch. \n" + ], + "text/html": [ + "
Cleaned up 1 empty switch.                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m18\u001b[0m. Executing CHECK pass \u001b[1m(\u001b[0mchecking for obvious problems\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
18. Executing CHECK pass (checking for obvious problems).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Checking module tapeout_vedic_mac_16\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Checking module tapeout_vedic_mac_16...                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Checking module vedic_16x16\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Checking module vedic_16x16...                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Checking module vedic_8x8\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Checking module vedic_8x8...                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Checking module vedic_4x4\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Checking module vedic_4x4...                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Checking module vedic_2x2\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Checking module vedic_2x2...                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Found and reported \u001b[1;36m0\u001b[0m problems. \n" + ], + "text/html": [ + "
Found and reported 0 problems.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m19\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
19. Executing OPT_EXPR pass (perform const folding).                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module vedic_16x16. \n" + ], + "text/html": [ + "
Optimizing module vedic_16x16.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~3 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module vedic_8x8. \n" + ], + "text/html": [ + "
Optimizing module vedic_8x8.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~3 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module vedic_4x4. \n" + ], + "text/html": [ + "
Optimizing module vedic_4x4.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~3 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module vedic_2x2. \n" + ], + "text/html": [ + "
Optimizing module vedic_2x2.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m20\u001b[0m. Executing FLATTEN pass \u001b[1m(\u001b[0mflatten design\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
20. Executing FLATTEN pass (flatten design).                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Deleting now unused module vedic_16x16. \n" + ], + "text/html": [ + "
Deleting now unused module vedic_16x16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Deleting now unused module vedic_8x8. \n" + ], + "text/html": [ + "
Deleting now unused module vedic_8x8.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Deleting now unused module vedic_4x4. \n" + ], + "text/html": [ + "
Deleting now unused module vedic_4x4.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Deleting now unused module vedic_2x2. \n" + ], + "text/html": [ + "
Deleting now unused module vedic_2x2.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m13\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~13 debug messages>                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m21\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
21. Executing OPT_EXPR pass (perform const folding).                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m22\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
22. Executing OPT_CLEAN pass (remove unused cells and wires).                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m1\u001b[0m unused cells and \u001b[1;36m344\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 1 unused cells and 344 unused wires.                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~2 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23\u001b[0m. Executing OPT pass \u001b[1m(\u001b[0mperforming simple optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23. Executing OPT pass (performing simple optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.1\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.1. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.2\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.2. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1152\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1152 debug messages>                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m384\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 384 cells.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.3\u001b[0m. Executing OPT_MUXTREE pass \u001b[1m(\u001b[0mdetect dead branches in mux trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running muxtree optimizer on module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Running muxtree optimizer on module \\tapeout_vedic_mac_16..                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating internal representation of mux trees. \n" + ], + "text/html": [ + "
Creating internal representation of mux trees.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Evaluating internal representation of mux trees. \n" + ], + "text/html": [ + "
Evaluating internal representation of mux trees.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Analyzing evaluation results. \n" + ], + "text/html": [ + "
Analyzing evaluation results.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m multiplexer ports. \n" + ], + "text/html": [ + "
Removed 0 multiplexer ports.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.4\u001b[0m. Executing OPT_REDUCE pass \u001b[1m(\u001b[0mconsolidate $*mux and $reduce_* inputs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing cells in module \\tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing cells in module \\tapeout_vedic_mac_16.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m changes. \n" + ], + "text/html": [ + "
Performed a total of 0 changes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.5\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.5. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.6\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.6. Executing OPT_DFF pass (perform DFF optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.7\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.7. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m unused cells and \u001b[1;36m384\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 0 unused cells and 384 unused wires.                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.8\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.8. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.9\u001b[0m. Rerunning OPT passes. \u001b[1m(\u001b[0mMaybe there is more to do..\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
23.9. Rerunning OPT passes. (Maybe there is more to do..)                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.10\u001b[0m. Executing OPT_MUXTREE pass \u001b[1m(\u001b[0mdetect dead branches in mux trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running muxtree optimizer on module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Running muxtree optimizer on module \\tapeout_vedic_mac_16..                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating internal representation of mux trees. \n" + ], + "text/html": [ + "
Creating internal representation of mux trees.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Evaluating internal representation of mux trees. \n" + ], + "text/html": [ + "
Evaluating internal representation of mux trees.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Analyzing evaluation results. \n" + ], + "text/html": [ + "
Analyzing evaluation results.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m multiplexer ports. \n" + ], + "text/html": [ + "
Removed 0 multiplexer ports.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.11\u001b[0m. Executing OPT_REDUCE pass \u001b[1m(\u001b[0mconsolidate $*mux and $reduce_* inputs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing cells in module \\tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing cells in module \\tapeout_vedic_mac_16.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m changes. \n" + ], + "text/html": [ + "
Performed a total of 0 changes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.12\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.12. Executing OPT_MERGE pass (detect identical cells).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.13\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.13. Executing OPT_DFF pass (perform DFF optimizations).                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.14\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.14. Executing OPT_CLEAN pass (remove unused cells and wires).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.15\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
23.15. Executing OPT_EXPR pass (perform const folding).                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m23.16\u001b[0m. Finished OPT passes. \u001b[1m(\u001b[0mThere is nothing left to do.\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
23.16. Finished OPT passes. (There is nothing left to do.)                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24\u001b[0m. Executing FSM pass \u001b[1m(\u001b[0mextract and optimize FSM\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24. Executing FSM pass (extract and optimize FSM).                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24.1\u001b[0m. Executing FSM_DETECT pass \u001b[1m(\u001b[0mfinding FSMs in design\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24.1. Executing FSM_DETECT pass (finding FSMs in design).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24.2\u001b[0m. Executing FSM_EXTRACT pass \u001b[1m(\u001b[0mextracting FSM from design\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24.2. Executing FSM_EXTRACT pass (extracting FSM from design).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24.3\u001b[0m. Executing FSM_OPT pass \u001b[1m(\u001b[0msimple optimizations of FSMs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24.3. Executing FSM_OPT pass (simple optimizations of FSMs).                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24.4\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24.4. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24.5\u001b[0m. Executing FSM_OPT pass \u001b[1m(\u001b[0msimple optimizations of FSMs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24.5. Executing FSM_OPT pass (simple optimizations of FSMs).                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24.6\u001b[0m. Executing FSM_RECODE pass \u001b[1m(\u001b[0mre-assigning FSM state encoding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24.6. Executing FSM_RECODE pass (re-assigning FSM state encoding).                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24.7\u001b[0m. Executing FSM_INFO pass \u001b[1m(\u001b[0mdumping all available information on FSM cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24.7. Executing FSM_INFO pass (dumping all available information on FSM cells).                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m24.8\u001b[0m. Executing FSM_MAP pass \u001b[1m(\u001b[0mmapping FSMs to basic logic\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
24.8. Executing FSM_MAP pass (mapping FSMs to basic logic).                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25\u001b[0m. Executing OPT pass \u001b[1m(\u001b[0mperforming simple optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25. Executing OPT pass (performing simple optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.1\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.1. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.2\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.2. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.3\u001b[0m. Executing OPT_MUXTREE pass \u001b[1m(\u001b[0mdetect dead branches in mux trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running muxtree optimizer on module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Running muxtree optimizer on module \\tapeout_vedic_mac_16..                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating internal representation of mux trees. \n" + ], + "text/html": [ + "
Creating internal representation of mux trees.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Evaluating internal representation of mux trees. \n" + ], + "text/html": [ + "
Evaluating internal representation of mux trees.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Analyzing evaluation results. \n" + ], + "text/html": [ + "
Analyzing evaluation results.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m multiplexer ports. \n" + ], + "text/html": [ + "
Removed 0 multiplexer ports.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.4\u001b[0m. Executing OPT_REDUCE pass \u001b[1m(\u001b[0mconsolidate $*mux and $reduce_* inputs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing cells in module \\tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing cells in module \\tapeout_vedic_mac_16.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m changes. \n" + ], + "text/html": [ + "
Performed a total of 0 changes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.5\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.5. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.6\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.6. Executing OPT_DFF pass (perform DFF optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Adding EN signal on $procdff$\u001b[1;36m40\u001b[0m \u001b[1m(\u001b[0m$adff\u001b[1m)\u001b[0m from module tapeout_vedic_mac_16 \u001b[1m(\u001b[0mD = \\secured_res, Q = \\Z\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Adding EN signal on $procdff$40 ($adff) from module tapeout_vedic_mac_16 (D = \\secured_res, Q = \\Z).               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.7\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.7. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m1\u001b[0m unused cells and \u001b[1;36m1\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 1 unused cells and 1 unused wires.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m2\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~2 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.8\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.8. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.9\u001b[0m. Rerunning OPT passes. \u001b[1m(\u001b[0mMaybe there is more to do..\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
25.9. Rerunning OPT passes. (Maybe there is more to do..)                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.10\u001b[0m. Executing OPT_MUXTREE pass \u001b[1m(\u001b[0mdetect dead branches in mux trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running muxtree optimizer on module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Running muxtree optimizer on module \\tapeout_vedic_mac_16..                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating internal representation of mux trees. \n" + ], + "text/html": [ + "
Creating internal representation of mux trees.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Evaluating internal representation of mux trees. \n" + ], + "text/html": [ + "
Evaluating internal representation of mux trees.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Analyzing evaluation results. \n" + ], + "text/html": [ + "
Analyzing evaluation results.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m multiplexer ports. \n" + ], + "text/html": [ + "
Removed 0 multiplexer ports.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.11\u001b[0m. Executing OPT_REDUCE pass \u001b[1m(\u001b[0mconsolidate $*mux and $reduce_* inputs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing cells in module \\tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing cells in module \\tapeout_vedic_mac_16.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m changes. \n" + ], + "text/html": [ + "
Performed a total of 0 changes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.12\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.12. Executing OPT_MERGE pass (detect identical cells).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.13\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.13. Executing OPT_DFF pass (perform DFF optimizations).                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.14\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.14. Executing OPT_CLEAN pass (remove unused cells and wires).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.15\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
25.15. Executing OPT_EXPR pass (perform const folding).                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m25.16\u001b[0m. Finished OPT passes. \u001b[1m(\u001b[0mThere is nothing left to do.\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
25.16. Finished OPT passes. (There is nothing left to do.)                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m26\u001b[0m. Executing WREDUCE pass \u001b[1m(\u001b[0mreducing word size of cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
26. Executing WREDUCE pass (reducing word size of cells).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell tapeout_vedic_mac_16.$eq$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m44\u001b[0m$\u001b[1;36m33\u001b[0m \u001b[1m(\u001b[0m$eq\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port B of cell tapeout_vedic_mac_16.$eq$./tapeout_vedic_mac_16.v:44$33 ($eq).       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m4\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 4 bits (of 16) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port A of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from port A of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m4\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 4 bits (of 16) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 16) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m4\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 4 bits (of 16) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port A of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from port A of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m4\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 4 bits (of 16) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 16) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m4\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 4 bits (of 16) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port A of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from port A of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m4\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 4 bits (of 16) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 16) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m4\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 4 bits (of 16) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port A of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from port A of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m4\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 4 bits (of 16) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 16) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 8) from port B of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from port Y of cell                                                                      \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m8\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m32\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m30\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 8 bits (of 32) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$30 ($add).                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m8\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m32\u001b[0m\u001b[1m)\u001b[0m from port B of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m28\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 8 bits (of 32) from port B of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$28 ($add).                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m7\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m32\u001b[0m\u001b[1m)\u001b[0m from port Y of cell \n", + "tapeout_vedic_mac_16.$flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m28\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
Removed top 7 bits (of 32) from port Y of cell                                                                     \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$28 ($add).                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m7\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m32\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$28_Y. \n" + ], + "text/html": [ + "
Removed top 7 bits (of 32) from wire tapeout_vedic_mac_16.$flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$28_Y.     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m11\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m32\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$30_Y. \n" + ], + "text/html": [ + "
Removed top 11 bits (of 32) from wire tapeout_vedic_mac_16.$flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$30_Y.    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$22_Y. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from wire tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$22_Y. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$24_Y. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 16) from wire tapeout_vedic_mac_16.$flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$24_Y. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$16_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$18_Y. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$18_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$16_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$18_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$18_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$16_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$18_Y. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$18_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$16_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$18_Y. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$18_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$22_Y. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from wire tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$22_Y. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$24_Y. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 16) from wire tapeout_vedic_mac_16.$flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$24_Y. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$16_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$16_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$22_Y. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from wire tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$22_Y. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$24_Y. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 16) from wire tapeout_vedic_mac_16.$flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$24_Y. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m3\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$22_Y. \n" + ], + "text/html": [ + "
Removed top 3 bits (of 16) from wire tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$22_Y. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m2\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m16\u001b[0m\u001b[1m)\u001b[0m from wire tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$24_Y. \n" + ], + "text/html": [ + "
Removed top 2 bits (of 16) from wire tapeout_vedic_mac_16.$flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$24_Y. \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$16_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed top \u001b[1;36m1\u001b[0m bits \u001b[1m(\u001b[0mof \u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m from wire \n", + "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y. \n" + ], + "text/html": [ + "
Removed top 1 bits (of 8) from wire                                                                                \n",
+              "tapeout_vedic_mac_16.$flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$16_Y.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m27\u001b[0m. Executing PEEPOPT pass \u001b[1m(\u001b[0mrun peephole optimizers\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
27. Executing PEEPOPT pass (run peephole optimizers).                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m28\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
28. Executing OPT_CLEAN pass (remove unused cells and wires).                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m unused cells and \u001b[1;36m22\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 0 unused cells and 22 unused wires.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m29\u001b[0m. Executing ALUMACC pass \u001b[1m(\u001b[0mcreate $alu and $macc cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
29. Executing ALUMACC pass (create $alu and $macc cells).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting $alu and $macc cells in module tapeout_vedic_mac_16: \n" + ], + "text/html": [ + "
Extracting $alu and $macc cells in module tapeout_vedic_mac_16:                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m44\u001b[0m$\u001b[1;36m34\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $add$./tapeout_vedic_mac_16.v:44$34 ($add).                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m28\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$28 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m30\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$30 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m32\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$32 ($add).                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$26 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$26 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$26 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$22 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$24 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$26 ($add).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$16 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc model for $flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m \u001b[1m(\u001b[0m$add\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
creating $macc model for $flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$20 ($add).                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m into \n", + "$flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$22 into                                 \n",
+              "$flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$24.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m into \n", + "$flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$22 into                                 \n",
+              "$flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$24.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m into \n", + "$flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$22 into                                 \n",
+              "$flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$24.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m18\u001b[0m into \n", + "$flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$18 into                             \n",
+              "$flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$20.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m22\u001b[0m into \n", + "$flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$22 into                                 \n",
+              "$flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$24.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m30\u001b[0m into \n", + "$flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m32\u001b[0m. \n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$30 into                                     \n",
+              "$flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$32.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "merging $macc model for $flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m32\u001b[0m into $add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m44\u001b[0m$\u001b[1;36m34\u001b[0m.\n" + ], + "text/html": [ + "
merging $macc model for $flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$32 into $add$./tapeout_vedic_mac_16.v:44$34.\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$26.                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$26.                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$26.                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$26.                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$16.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu model for $macc $flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m28\u001b[0m. \n" + ], + "text/html": [ + "
creating $alu model for $macc $flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$28.                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m: $auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m64\u001b[0m\n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$24: $auto$alumacc.cc:365:replace_macc$64\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m65\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$65                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m66\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$66                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m67\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$67                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m68\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$68                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m69\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$69                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m70\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$70                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m: $auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m71\u001b[0m\n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$24: $auto$alumacc.cc:365:replace_macc$71\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m72\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$72                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m73\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$73                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m74\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$74                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m75\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$75                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m76\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$76                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m: $auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m77\u001b[0m\n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$24: $auto$alumacc.cc:365:replace_macc$77\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m78\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$78                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m24\u001b[0m: $auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m79\u001b[0m\n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$24: $auto$alumacc.cc:365:replace_macc$79\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m80\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$80                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m81\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$81                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m82\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$82                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m20\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m83\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$20:                                 \n",
+              "$auto$alumacc.cc:365:replace_macc$83                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $macc cell for $add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m44\u001b[0m$\u001b[1;36m34\u001b[0m: $auto$alumacc.\u001b[1;92mcc:365\u001b[0m:replace_macc$\u001b[1;36m84\u001b[0m \n" + ], + "text/html": [ + "
creating $macc cell for $add$./tapeout_vedic_mac_16.v:44$34: $auto$alumacc.cc:365:replace_macc$84                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m32\u001b[0m$\u001b[1;36m28\u001b[0m: $auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m85\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.$add$./tapeout_vedic_mac_16.v:32$28: $auto$alumacc.cc:485:replace_alu$85      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m3.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m88\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m3.\\m3.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$88                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m: $auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m91\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m0.$add$./tapeout_vedic_mac_16.v:23$26: $auto$alumacc.cc:485:replace_alu$91  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m0.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m94\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m0.\\m0.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$94                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m0.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m97\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m0.\\m1.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$97                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m100\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$100                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m0.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m103\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m0.\\m2.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$103                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m3.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m106\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m3.\\m2.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$106                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m0.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m109\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m0.\\m3.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$109                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m: $auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m112\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m1.$add$./tapeout_vedic_mac_16.v:23$26: $auto$alumacc.cc:485:replace_alu$112 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m115\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$115                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m118\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$118                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m121\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$121                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m1.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m124\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m1.\\m2.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$124                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m1.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m127\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m1.\\m3.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$127                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m130\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$130                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m: $auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m133\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m3.$add$./tapeout_vedic_mac_16.v:23$26: $auto$alumacc.cc:485:replace_alu$133 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m23\u001b[0m$\u001b[1;36m26\u001b[0m: $auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m136\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m2.$add$./tapeout_vedic_mac_16.v:23$26: $auto$alumacc.cc:485:replace_alu$136 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m139\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$139                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m142\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$142                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "creating $alu cell for $flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$\u001b[1;36m16\u001b[0m: \n", + "$auto$alumacc.\u001b[1;92mcc:485\u001b[0m:replace_alu$\u001b[1;36m145\u001b[0m \n" + ], + "text/html": [ + "
creating $alu cell for $flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$16:                                  \n",
+              "$auto$alumacc.cc:485:replace_alu$145                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "created \u001b[1;36m21\u001b[0m $alu and \u001b[1;36m21\u001b[0m $macc cells. \n" + ], + "text/html": [ + "
created 21 $alu and 21 $macc cells.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m30\u001b[0m. Executing SHARE pass \u001b[1m(\u001b[0mSAT-based resource sharing\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
30. Executing SHARE pass (SAT-based resource sharing).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31\u001b[0m. Executing OPT pass \u001b[1m(\u001b[0mperforming simple optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31. Executing OPT pass (performing simple optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.1\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.1. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.2\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.2. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.3\u001b[0m. Executing OPT_MUXTREE pass \u001b[1m(\u001b[0mdetect dead branches in mux trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running muxtree optimizer on module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Running muxtree optimizer on module \\tapeout_vedic_mac_16..                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating internal representation of mux trees. \n" + ], + "text/html": [ + "
Creating internal representation of mux trees.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Evaluating internal representation of mux trees. \n" + ], + "text/html": [ + "
Evaluating internal representation of mux trees.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Analyzing evaluation results. \n" + ], + "text/html": [ + "
Analyzing evaluation results.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m multiplexer ports. \n" + ], + "text/html": [ + "
Removed 0 multiplexer ports.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.4\u001b[0m. Executing OPT_REDUCE pass \u001b[1m(\u001b[0mconsolidate $*mux and $reduce_* inputs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing cells in module \\tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing cells in module \\tapeout_vedic_mac_16.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m changes. \n" + ], + "text/html": [ + "
Performed a total of 0 changes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.5\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.5. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.6\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.6. Executing OPT_DFF pass (perform DFF optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.7\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.7. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m22\u001b[0m unused cells and \u001b[1;36m23\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 22 unused cells and 23 unused wires.                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m25\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~25 debug messages>                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.8\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.8. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.9\u001b[0m. Rerunning OPT passes. \u001b[1m(\u001b[0mMaybe there is more to do..\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
31.9. Rerunning OPT passes. (Maybe there is more to do..)                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.10\u001b[0m. Executing OPT_MUXTREE pass \u001b[1m(\u001b[0mdetect dead branches in mux trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.10. Executing OPT_MUXTREE pass (detect dead branches in mux trees).                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running muxtree optimizer on module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Running muxtree optimizer on module \\tapeout_vedic_mac_16..                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating internal representation of mux trees. \n" + ], + "text/html": [ + "
Creating internal representation of mux trees.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Evaluating internal representation of mux trees. \n" + ], + "text/html": [ + "
Evaluating internal representation of mux trees.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Analyzing evaluation results. \n" + ], + "text/html": [ + "
Analyzing evaluation results.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m multiplexer ports. \n" + ], + "text/html": [ + "
Removed 0 multiplexer ports.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.11\u001b[0m. Executing OPT_REDUCE pass \u001b[1m(\u001b[0mconsolidate $*mux and $reduce_* inputs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.11. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing cells in module \\tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing cells in module \\tapeout_vedic_mac_16.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m changes. \n" + ], + "text/html": [ + "
Performed a total of 0 changes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.12\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.12. Executing OPT_MERGE pass (detect identical cells).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.13\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.13. Executing OPT_DFF pass (perform DFF optimizations).                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.14\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.14. Executing OPT_CLEAN pass (remove unused cells and wires).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.15\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
31.15. Executing OPT_EXPR pass (perform const folding).                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m31.16\u001b[0m. Finished OPT passes. \u001b[1m(\u001b[0mThere is nothing left to do.\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
31.16. Finished OPT passes. (There is nothing left to do.)                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32\u001b[0m. Executing MEMORY pass. \n" + ], + "text/html": [ + "
32. Executing MEMORY pass.                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.1\u001b[0m. Executing OPT_MEM pass \u001b[1m(\u001b[0moptimize memories\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.1. Executing OPT_MEM pass (optimize memories).                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m transformations. \n" + ], + "text/html": [ + "
Performed a total of 0 transformations.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.2\u001b[0m. Executing OPT_MEM_PRIORITY pass \u001b[1m(\u001b[0mremoving unnecessary memory write priority relations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.2. Executing OPT_MEM_PRIORITY pass (removing unnecessary memory write priority relations).                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m transformations. \n" + ], + "text/html": [ + "
Performed a total of 0 transformations.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.3\u001b[0m. Executing OPT_MEM_FEEDBACK pass \u001b[1m(\u001b[0mfinding memory read-to-write feedback paths\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.3. Executing OPT_MEM_FEEDBACK pass (finding memory read-to-write feedback paths).                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.4\u001b[0m. Executing MEMORY_BMUX2ROM pass \u001b[1m(\u001b[0mconverting muxes to ROMs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.4. Executing MEMORY_BMUX2ROM pass (converting muxes to ROMs).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.5\u001b[0m. Executing MEMORY_DFF pass \u001b[1m(\u001b[0mmerging $dff cells to $memrd\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.5. Executing MEMORY_DFF pass (merging $dff cells to $memrd).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.6\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.6. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.7\u001b[0m. Executing MEMORY_SHARE pass \u001b[1m(\u001b[0mconsolidating $memrd/$memwr cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.7. Executing MEMORY_SHARE pass (consolidating $memrd/$memwr cells).                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.8\u001b[0m. Executing OPT_MEM_WIDEN pass \u001b[1m(\u001b[0moptimize memories where all ports are wide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.8. Executing OPT_MEM_WIDEN pass (optimize memories where all ports are wide).                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m transformations. \n" + ], + "text/html": [ + "
Performed a total of 0 transformations.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.9\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.9. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m32.10\u001b[0m. Executing MEMORY_COLLECT pass \u001b[1m(\u001b[0mgenerating $mem cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
32.10. Executing MEMORY_COLLECT pass (generating $mem cells).                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m33\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
33. Executing OPT_CLEAN pass (remove unused cells and wires).                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m34\u001b[0m. Executing OPT pass \u001b[1m(\u001b[0mperforming simple optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
34. Executing OPT pass (performing simple optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m34.1\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
34.1. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m21\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~21 debug messages>                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m34.2\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
34.2. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m34.3\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
34.3. Executing OPT_DFF pass (perform DFF optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m34.4\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
34.4. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m34.5\u001b[0m. Finished fast OPT passes. \n" + ], + "text/html": [ + "
34.5. Finished fast OPT passes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m35\u001b[0m. Executing MEMORY_MAP pass \u001b[1m(\u001b[0mconverting memories to logic and flip-flops\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
35. Executing MEMORY_MAP pass (converting memories to logic and flip-flops).                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36\u001b[0m. Executing OPT pass \u001b[1m(\u001b[0mperforming simple optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36. Executing OPT pass (performing simple optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.1\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36.1. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.2\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36.2. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.3\u001b[0m. Executing OPT_MUXTREE pass \u001b[1m(\u001b[0mdetect dead branches in mux trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running muxtree optimizer on module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Running muxtree optimizer on module \\tapeout_vedic_mac_16..                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating internal representation of mux trees. \n" + ], + "text/html": [ + "
Creating internal representation of mux trees.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Evaluating internal representation of mux trees. \n" + ], + "text/html": [ + "
Evaluating internal representation of mux trees.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Analyzing evaluation results. \n" + ], + "text/html": [ + "
Analyzing evaluation results.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m multiplexer ports. \n" + ], + "text/html": [ + "
Removed 0 multiplexer ports.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~1 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.4\u001b[0m. Executing OPT_REDUCE pass \u001b[1m(\u001b[0mconsolidate $*mux and $reduce_* inputs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing cells in module \\tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing cells in module \\tapeout_vedic_mac_16.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m changes. \n" + ], + "text/html": [ + "
Performed a total of 0 changes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.5\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36.5. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.6\u001b[0m. Executing OPT_SHARE pass. \n" + ], + "text/html": [ + "
36.6. Executing OPT_SHARE pass.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.7\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36.7. Executing OPT_DFF pass (perform DFF optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.8\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36.8. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.9\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
36.9. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m36.10\u001b[0m. Finished OPT passes. \u001b[1m(\u001b[0mThere is nothing left to do.\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
36.10. Finished OPT passes. (There is nothing left to do.)                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m37\u001b[0m. Executing TECHMAP pass \u001b[1m(\u001b[0mmap to technology primitives\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
37. Executing TECHMAP pass (map to technology primitives).                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m37.1\u001b[0m. Executing Verilog-\u001b[1;36m2005\u001b[0m frontend: \n", + "\u001b[35m/nix/store/sx2v0i73mn1ih2z1nk61pm9n5gjgpidy-yosys/bin/../share/yosys/\u001b[0m\u001b[95mtechmap.v\u001b[0m \n" + ], + "text/html": [ + "
37.1. Executing Verilog-2005 frontend:                                                                             \n",
+              "/nix/store/sx2v0i73mn1ih2z1nk61pm9n5gjgpidy-yosys/bin/../share/yosys/techmap.v                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Parsing Verilog input from `\u001b[35m/nix/store/sx2v0i73mn1ih2z1nk61pm9n5gjgpidy-yosys/bin/../share/yosys/\u001b[0m\u001b[95mtechmap.v\u001b[0m' to AST \n", + "representation. \n" + ], + "text/html": [ + "
Parsing Verilog input from `/nix/store/sx2v0i73mn1ih2z1nk61pm9n5gjgpidy-yosys/bin/../share/yosys/techmap.v' to AST \n",
+              "representation.                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_simplemap_bool_ops'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_simplemap_bool_ops'.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_simplemap_reduce_ops'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_simplemap_reduce_ops'.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_simplemap_logic_ops'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_simplemap_logic_ops'.                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_simplemap_compare_ops'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_simplemap_compare_ops'.                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_simplemap_various'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_simplemap_various'.                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_simplemap_registers'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_simplemap_registers'.                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_shift_ops_shr_shl_sshl_sshr'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_shift_ops_shr_shl_sshl_sshr'.                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_shift_shiftx'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_shift_shiftx'.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_fa'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_fa'.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_lcu'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_lcu'.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_alu'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_alu'.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_macc'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_macc'.                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_alumacc'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_alumacc'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\$__div_mod_u'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\$__div_mod_u'.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\$__div_mod_trunc'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\$__div_mod_trunc'.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_div'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_div'.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_mod'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_mod'.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\$__div_mod_floor'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\$__div_mod_floor'.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_divfloor'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_divfloor'.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_modfloor'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_modfloor'.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_pow'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_pow'.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_pmux'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_pmux'.                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_demux'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_demux'.                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\_90_lut'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\_90_lut'.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Successfully finished Verilog frontend. \n" + ], + "text/html": [ + "
Successfully finished Verilog frontend.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m37.2\u001b[0m. Continuing TECHMAP pass. \n" + ], + "text/html": [ + "
37.2. Continuing TECHMAP pass.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper simplemap for cells of type $eq. \n" + ], + "text/html": [ + "
Using extmapper simplemap for cells of type $eq.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod$a1bc51c02ce12ac21eb18988e83292af48ed7d72\\_90_alu for cells of type $alu. \n" + ], + "text/html": [ + "
Using template $paramod$a1bc51c02ce12ac21eb18988e83292af48ed7d72\\_90_alu for cells of type $alu.                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod$0670e2b5f39a952ee2dd39072443556343a2df97\\_90_alu for cells of type $alu. \n" + ], + "text/html": [ + "
Using template $paramod$0670e2b5f39a952ee2dd39072443556343a2df97\\_90_alu for cells of type $alu.                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper simplemap for cells of type $mux. \n" + ], + "text/html": [ + "
Using extmapper simplemap for cells of type $mux.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper maccmap for cells of type $macc. \n" + ], + "text/html": [ + "
Using extmapper maccmap for cells of type $macc.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \\mult.m1.q0 \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add \\mult.m1.q0 (8 bits, unsigned)                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m2.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m2.out 4'0000 } (12 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m1.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m1.out 4'0000 } (12 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper simplemap for cells of type $adffe. \n" + ], + "text/html": [ + "
Using extmapper simplemap for cells of type $adffe.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper simplemap for cells of type $and. \n" + ], + "text/html": [ + "
Using extmapper simplemap for cells of type $and.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $flatten\\mult.\\m2.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m2.m0.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $flatten\\mult.\\m2.\\m0.$add$./tapeout_vedic_mac_16.v:14$16_Y [6:2] \\mult.m2.m0.q0 [1:0] } (7 bits, unsigned)  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m0.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m0.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m0.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m0.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper simplemap for cells of type $xor. \n" + ], + "text/html": [ + "
Using extmapper simplemap for cells of type $xor.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m42\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m24:8\u001b[0m\u001b[1m]\u001b[0m \\mult.m0.out \u001b[1m[\u001b[0m\u001b[1;92m7:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m25\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$42 [24:8] \\mult.m0.out [7:0] } (25 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \\C \u001b[1m(\u001b[0m\u001b[1;36m32\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add \\C (32 bits, unsigned)                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.out \u001b[1;36m16\u001b[0m'\u001b[1;36m0000000000000000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m32\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.out 16'0000000000000000 } (32 bits, unsigned)                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.out \u001b[1;36m8\u001b[0m'\u001b[1;36m00000000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m24\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.out 8'00000000 } (24 bits, unsigned)                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod$0ae6dcbc606d0267ec97d3ccf20343286af3366c\\_90_alu for cells of type $alu. \n" + ], + "text/html": [ + "
Using template $paramod$0ae6dcbc606d0267ec97d3ccf20343286af3366c\\_90_alu for cells of type $alu.                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m57\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m1.m3.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$57 [6:2] \\mult.m1.m3.q0 [1:0] } (7 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m3.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m3.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m3.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m3.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \\mult.m3.q0 \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add \\mult.m3.q0 (8 bits, unsigned)                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m2.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m2.out 4'0000 } (12 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m1.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m1.out 4'0000 } (12 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $flatten\\mult.\\m2.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m2.m1.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $flatten\\mult.\\m2.\\m1.$add$./tapeout_vedic_mac_16.v:14$16_Y [6:2] \\mult.m2.m1.q0 [1:0] } (7 bits, unsigned)  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m1.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m1.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m1.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m1.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m48\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m0.m1.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$48 [6:2] \\mult.m0.m1.q0 [1:0] } (7 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m1.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m1.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m1.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m1.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \\mult.m0.q0 \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add \\mult.m0.q0 (8 bits, unsigned)                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m2.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m2.out 4'0000 } (12 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m1.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m1.out 4'0000 } (12 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $flatten\\mult.\\m3.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m3.m0.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $flatten\\mult.\\m3.\\m0.$add$./tapeout_vedic_mac_16.v:14$16_Y [6:2] \\mult.m3.m0.q0 [1:0] } (7 bits, unsigned)  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m0.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m0.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m0.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m0.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \\mult.m2.q0 \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add \\mult.m2.q0 (8 bits, unsigned)                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m2.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m2.out 4'0000 } (12 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m1.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m1.out 4'0000 } (12 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m52\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m0.m3.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$52 [6:2] \\mult.m0.m3.q0 [1:0] } (7 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m3.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m3.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m3.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m3.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $flatten\\mult.\\m2.\\m3.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m2.m3.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $flatten\\mult.\\m2.\\m3.$add$./tapeout_vedic_mac_16.v:14$16_Y [6:2] \\mult.m2.m3.q0 [1:0] } (7 bits, unsigned)  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m3.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m3.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m3.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m3.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m56\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m1.m2.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$56 [6:2] \\mult.m1.m2.q0 [1:0] } (7 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m2.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m2.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m2.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m2.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m63\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m3.m3.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$63 [6:2] \\mult.m3.m3.q0 [1:0] } (7 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m3.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m3.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m3.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m3.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m46\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m0.m0.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$46 [6:2] \\mult.m0.m0.q0 [1:0] } (7 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m0.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m0.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m0.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m0.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m50\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m0.m2.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$50 [6:2] \\mult.m0.m2.q0 [1:0] } (7 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m2.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m2.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m0.m2.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m0.m2.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $flatten\\mult.\\m1.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m1.m1.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $flatten\\mult.\\m1.\\m1.$add$./tapeout_vedic_mac_16.v:14$16_Y [6:2] \\mult.m1.m1.q0 [1:0] } (7 bits, unsigned)  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m1.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m1.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m1.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m1.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $auto$wreduce.\u001b[1;92mcc:461\u001b[0m:run$\u001b[1;36m62\u001b[0m \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m3.m2.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $auto$wreduce.cc:461:run$62 [6:2] \\mult.m3.m2.q0 [1:0] } (7 bits, unsigned)                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m2.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m2.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m2.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m2.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $flatten\\mult.\\m1.\\m0.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m1.m0.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $flatten\\mult.\\m1.\\m0.$add$./tapeout_vedic_mac_16.v:14$16_Y [6:2] \\mult.m1.m0.q0 [1:0] } (7 bits, unsigned)  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m0.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m0.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m1.m0.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m1.m0.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $flatten\\mult.\\m2.\\m2.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m2.m2.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $flatten\\mult.\\m2.\\m2.$add$./tapeout_vedic_mac_16.v:14$16_Y [6:2] \\mult.m2.m2.q0 [1:0] } (7 bits, unsigned)  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m2.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m2.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m2.m2.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m2.m2.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m $flatten\\mult.\\m3.\\m1.$add$.\u001b[35m/\u001b[0m\u001b[95mtapeout_vedic_mac_16.v\u001b[0m:\u001b[1;36m14\u001b[0m$16_Y \u001b[1m[\u001b[0m\u001b[1;92m6:2\u001b[0m\u001b[1m]\u001b[0m \\mult.m3.m1.q0 \u001b[1m[\u001b[0m\u001b[1;92m1:0\u001b[0m\u001b[1m]\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { $flatten\\mult.\\m3.\\m1.$add$./tapeout_vedic_mac_16.v:14$16_Y [6:2] \\mult.m3.m1.q0 [1:0] } (7 bits, unsigned)  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m1.m3.out \u001b[1;36m4\u001b[0m'\u001b[1;36m0000\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m8\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m1.m3.out 4'0000 } (8 bits, unsigned)                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "add \u001b[1m{\u001b[0m \\mult.m3.m1.m2.out \u001b[1;36m2\u001b[0m'\u001b[1;36m00\u001b[0m \u001b[1m}\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m6\u001b[0m bits, unsigned\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
add { \\mult.m3.m1.m2.out 2'00 } (6 bits, unsigned)                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper simplemap for cells of type $not. \n" + ], + "text/html": [ + "
Using extmapper simplemap for cells of type $not.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod\\_90_lcu\\\u001b[33mWIDTH\u001b[0m=\u001b[1;36m32\u001b[0m'\u001b[1;36m00000000000000000000000000010001\u001b[0m for cells of type $lcu. \n" + ], + "text/html": [ + "
Using template $paramod\\_90_lcu\\WIDTH=32'00000000000000000000000000010001 for cells of type $lcu.                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper simplemap for cells of type $pos. \n" + ], + "text/html": [ + "
Using extmapper simplemap for cells of type $pos.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod\\_90_fa\\\u001b[33mWIDTH\u001b[0m=\u001b[1;36m32\u001b[0m'\u001b[1;36m00000000000000000000000000001000\u001b[0m for cells of type $fa. \n" + ], + "text/html": [ + "
Using template $paramod\\_90_fa\\WIDTH=32'00000000000000000000000000001000 for cells of type $fa.                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod\\_90_fa\\\u001b[33mWIDTH\u001b[0m=\u001b[1;36m32\u001b[0m'\u001b[1;36m00000000000000000000000000001100\u001b[0m for cells of type $fa. \n" + ], + "text/html": [ + "
Using template $paramod\\_90_fa\\WIDTH=32'00000000000000000000000000001100 for cells of type $fa.                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod$091610cd349a68bd5539cffd7126f0d76e9bca00\\_90_alu for cells of type $alu. \n" + ], + "text/html": [ + "
Using template $paramod$091610cd349a68bd5539cffd7126f0d76e9bca00\\_90_alu for cells of type $alu.                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod\\_90_lcu\\\u001b[33mWIDTH\u001b[0m=\u001b[1;36m32\u001b[0m'\u001b[1;36m00000000000000000000000000001000\u001b[0m for cells of type $lcu. \n" + ], + "text/html": [ + "
Using template $paramod\\_90_lcu\\WIDTH=32'00000000000000000000000000001000 for cells of type $lcu.                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod\\_90_lcu\\\u001b[33mWIDTH\u001b[0m=\u001b[1;36m32\u001b[0m'\u001b[1;36m00000000000000000000000000000101\u001b[0m for cells of type $lcu. \n" + ], + "text/html": [ + "
Using template $paramod\\_90_lcu\\WIDTH=32'00000000000000000000000000000101 for cells of type $lcu.                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod\\_90_fa\\\u001b[33mWIDTH\u001b[0m=\u001b[1;36m32\u001b[0m'\u001b[1;36m00000000000000000000000000100000\u001b[0m for cells of type $fa. \n" + ], + "text/html": [ + "
Using template $paramod\\_90_fa\\WIDTH=32'00000000000000000000000000100000 for cells of type $fa.                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod$fbc7873bff55778c0b3173955b7e4bce1d9d6834\\_90_alu for cells of type $alu. \n" + ], + "text/html": [ + "
Using template $paramod$fbc7873bff55778c0b3173955b7e4bce1d9d6834\\_90_alu for cells of type $alu.                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using extmapper simplemap for cells of type $or. \n" + ], + "text/html": [ + "
Using extmapper simplemap for cells of type $or.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod\\_90_lcu\\\u001b[33mWIDTH\u001b[0m=\u001b[1;36m32\u001b[0m'\u001b[1;36m00000000000000000000000000001110\u001b[0m for cells of type $lcu. \n" + ], + "text/html": [ + "
Using template $paramod\\_90_lcu\\WIDTH=32'00000000000000000000000000001110 for cells of type $lcu.                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using template $paramod\\_90_lcu\\\u001b[33mWIDTH\u001b[0m=\u001b[1;36m32\u001b[0m'\u001b[1;36m00000000000000000000000000100000\u001b[0m for cells of type $lcu. \n" + ], + "text/html": [ + "
Using template $paramod\\_90_lcu\\WIDTH=32'00000000000000000000000000100000 for cells of type $lcu.                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No more expansions possible. \n" + ], + "text/html": [ + "
No more expansions possible.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m3033\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~3033 debug messages>                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m38\u001b[0m. Executing OPT pass \u001b[1m(\u001b[0mperforming simple optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
38. Executing OPT pass (performing simple optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m38.1\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
38.1. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m2018\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~2018 debug messages>                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m38.2\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
38.2. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m12\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~12 debug messages>                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m4\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 4 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m38.3\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
38.3. Executing OPT_DFF pass (perform DFF optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m38.4\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
38.4. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m453\u001b[0m unused cells and \u001b[1;36m1731\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 453 unused cells and 1731 unused wires.                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m454\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~454 debug messages>                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m38.5\u001b[0m. Finished fast OPT passes. \n" + ], + "text/html": [ + "
38.5. Finished fast OPT passes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m39\u001b[0m. Executing ABC pass \u001b[1m(\u001b[0mtechnology mapping using ABC\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
39. Executing ABC pass (technology mapping using ABC).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m39.1\u001b[0m. Extracting gate netlist of module `\\tapeout_vedic_mac_16' to `\u001b[1m<\u001b[0m\u001b[1;95mabc-temp-dir\u001b[0m\u001b[1m>\u001b[0m\u001b[35m/\u001b[0m\u001b[95minput.blif\u001b[0m'.. \n" + ], + "text/html": [ + "
39.1. Extracting gate netlist of module `\\tapeout_vedic_mac_16' to `<abc-temp-dir>/input.blif'..                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracted \u001b[1;36m2273\u001b[0m gates and \u001b[1;36m2346\u001b[0m wires to a netlist network with \u001b[1;36m72\u001b[0m inputs and \u001b[1;36m32\u001b[0m outputs. \n" + ], + "text/html": [ + "
Extracted 2273 gates and 2346 wires to a netlist network with 72 inputs and 32 outputs.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m39.1\u001b[0m.\u001b[1;36m1\u001b[0m. Executing ABC. \n" + ], + "text/html": [ + "
39.1.1. Executing ABC.                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running ABC command: \u001b[32m\"/nix/store/wq2q0njg3sx8wvj2akz7x1qxwyrv9xlr-yosys-abc/bin/abc\"\u001b[0m -s -f \n", + "\u001b[1m<\u001b[0m\u001b[1;95mabc-temp-dir\u001b[0m\u001b[39m>\u001b[0m\u001b[35m/\u001b[0m\u001b[95mabc.script\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m&\u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Running ABC command: \"/nix/store/wq2q0njg3sx8wvj2akz7x1qxwyrv9xlr-yosys-abc/bin/abc\" -s -f                         \n",
+              "<abc-temp-dir>/abc.script 2>&1                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: ABC command line: \u001b[32m\"source \u001b[0m\u001b[32m<\u001b[0m\u001b[32mabc-temp-dir\u001b[0m\u001b[32m>\u001b[0m\u001b[32m/abc.script\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: ABC command line: \"source <abc-temp-dir>/abc.script\".                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \n" + ], + "text/html": [ + "
ABC:                                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + read_blif \u001b[1m<\u001b[0m\u001b[1;95mabc-temp-dir\u001b[0m\u001b[1m>\u001b[0m\u001b[35m/\u001b[0m\u001b[95minput.blif\u001b[0m \n" + ], + "text/html": [ + "
ABC: + read_blif <abc-temp-dir>/input.blif                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + read_library \u001b[1m<\u001b[0m\u001b[1;95mabc-temp-dir\u001b[0m\u001b[1m>\u001b[0m\u001b[35m/\u001b[0m\u001b[95mstdcells.genlib\u001b[0m \n" + ], + "text/html": [ + "
ABC: + read_library <abc-temp-dir>/stdcells.genlib                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Entered genlib library with \u001b[1;36m13\u001b[0m gates from file \u001b[32m\"\u001b[0m\u001b[32m<\u001b[0m\u001b[32mabc-temp-dir\u001b[0m\u001b[32m>\u001b[0m\u001b[32m/stdcells.genlib\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Entered genlib library with 13 gates from file \"<abc-temp-dir>/stdcells.genlib\".                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + strash \n" + ], + "text/html": [ + "
ABC: + strash                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + dretime \n" + ], + "text/html": [ + "
ABC: + dretime                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + map \n" + ], + "text/html": [ + "
ABC: + map                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + write_blif \u001b[1m<\u001b[0m\u001b[1;95mabc-temp-dir\u001b[0m\u001b[1m>\u001b[0m\u001b[35m/\u001b[0m\u001b[95moutput.blif\u001b[0m \n" + ], + "text/html": [ + "
ABC: + write_blif <abc-temp-dir>/output.blif                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m39.1\u001b[0m.\u001b[1;36m2\u001b[0m. Re-integrating ABC results. \n" + ], + "text/html": [ + "
39.1.2. Re-integrating ABC results.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: NAND cells: \u001b[1;36m27\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:              NAND cells:       27                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: AND cells: \u001b[1;36m317\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:               AND cells:      317                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: NOT cells: \u001b[1;36m173\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:               NOT cells:      173                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: OR cells: \u001b[1;36m192\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:                OR cells:      192                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: NOR cells: \u001b[1;36m150\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:               NOR cells:      150                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: XNOR cells: \u001b[1;36m202\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:              XNOR cells:      202                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: ORNOT cells: \u001b[1;36m145\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:             ORNOT cells:      145                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: XOR cells: \u001b[1;36m588\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:               XOR cells:      588                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: ANDNOT cells: \u001b[1;36m648\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:            ANDNOT cells:      648                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: internal signals: \u001b[1;36m2242\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:        internal signals:     2242                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: input signals: \u001b[1;36m72\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:           input signals:       72                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: output signals: \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:          output signals:       32                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removing temp directory. \n" + ], + "text/html": [ + "
Removing temp directory.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m40\u001b[0m. Executing OPT pass \u001b[1m(\u001b[0mperforming simple optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
40. Executing OPT pass (performing simple optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m40.1\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
40.1. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m40.2\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
40.2. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m40.3\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
40.3. Executing OPT_DFF pass (perform DFF optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m40.4\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
40.4. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m unused cells and \u001b[1;36m1154\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 0 unused cells and 1154 unused wires.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m169\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~169 debug messages>                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m40.5\u001b[0m. Finished fast OPT passes. \n" + ], + "text/html": [ + "
40.5. Finished fast OPT passes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m41\u001b[0m. Executing HIERARCHY pass \u001b[1m(\u001b[0mmanaging design hierarchy\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
41. Executing HIERARCHY pass (managing design hierarchy).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m41.1\u001b[0m. Analyzing design hierarchy.. \n" + ], + "text/html": [ + "
41.1. Analyzing design hierarchy..                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Top module: \\tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Top module:  \\tapeout_vedic_mac_16                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m41.2\u001b[0m. Analyzing design hierarchy.. \n" + ], + "text/html": [ + "
41.2. Analyzing design hierarchy..                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Top module: \\tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Top module:  \\tapeout_vedic_mac_16                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m unused modules. \n" + ], + "text/html": [ + "
Removed 0 unused modules.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m42\u001b[0m. Printing statistics. \n" + ], + "text/html": [ + "
42. Printing statistics.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "=== tapeout_vedic_mac_16 === \n" + ], + "text/html": [ + "
=== tapeout_vedic_mac_16 ===                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of wires: \u001b[1;36m2589\u001b[0m \n" + ], + "text/html": [ + "
Number of wires:               2589                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of wire bits: \u001b[1;36m3029\u001b[0m \n" + ], + "text/html": [ + "
Number of wire bits:           3029                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of public wires: \u001b[1;36m179\u001b[0m \n" + ], + "text/html": [ + "
Number of public wires:         179                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of public wire bits: \u001b[1;36m619\u001b[0m \n" + ], + "text/html": [ + "
Number of public wire bits:     619                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of memories: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of memories:               0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of memory bits: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of memory bits:            0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of processes: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of processes:              0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of cells: \u001b[1;36m2474\u001b[0m \n" + ], + "text/html": [ + "
Number of cells:               2474                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_ANDNOT_ \u001b[1;36m648\u001b[0m \n" + ], + "text/html": [ + "
$_ANDNOT_                     648                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_AND_ \u001b[1;36m317\u001b[0m \n" + ], + "text/html": [ + "
$_AND_                        317                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_DFFE_PN0P_ \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
$_DFFE_PN0P_                   32                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NAND_ \u001b[1;36m27\u001b[0m \n" + ], + "text/html": [ + "
$_NAND_                        27                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NOR_ \u001b[1;36m150\u001b[0m \n" + ], + "text/html": [ + "
$_NOR_                        150                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NOT_ \u001b[1;36m173\u001b[0m \n" + ], + "text/html": [ + "
$_NOT_                        173                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_ORNOT_ \u001b[1;36m145\u001b[0m \n" + ], + "text/html": [ + "
$_ORNOT_                      145                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_OR_ \u001b[1;36m192\u001b[0m \n" + ], + "text/html": [ + "
$_OR_                         192                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_XNOR_ \u001b[1;36m202\u001b[0m \n" + ], + "text/html": [ + "
$_XNOR_                       202                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_XOR_ \u001b[1;36m588\u001b[0m \n" + ], + "text/html": [ + "
$_XOR_                        588                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m43\u001b[0m. Executing CHECK pass \u001b[1m(\u001b[0mchecking for obvious problems\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
43. Executing CHECK pass (checking for obvious problems).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Checking module tapeout_vedic_mac_16\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Checking module tapeout_vedic_mac_16...                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Found and reported \u001b[1;36m0\u001b[0m problems. \n" + ], + "text/html": [ + "
Found and reported 0 problems.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m44\u001b[0m. Generating Graphviz representation of design. \n" + ], + "text/html": [ + "
44. Generating Graphviz representation of design.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing dot description to `\u001b[35m/content/openlane_run/18-yosys-synthesis/\u001b[0m\u001b[95mprimitive_techmap.dot\u001b[0m'. \n" + ], + "text/html": [ + "
Writing dot description to `/content/openlane_run/18-yosys-synthesis/primitive_techmap.dot'.                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Dumping module tapeout_vedic_mac_16 to page \u001b[1;36m1\u001b[0m. \n" + ], + "text/html": [ + "
Dumping module tapeout_vedic_mac_16 to page 1.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45\u001b[0m. Executing OPT pass \u001b[1m(\u001b[0mperforming simple optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45. Executing OPT pass (performing simple optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.1\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45.1. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.2\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45.2. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.3\u001b[0m. Executing OPT_MUXTREE pass \u001b[1m(\u001b[0mdetect dead branches in mux trees\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45.3. Executing OPT_MUXTREE pass (detect dead branches in mux trees).                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running muxtree optimizer on module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Running muxtree optimizer on module \\tapeout_vedic_mac_16..                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating internal representation of mux trees. \n" + ], + "text/html": [ + "
Creating internal representation of mux trees.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No muxes found in this module. \n" + ], + "text/html": [ + "
No muxes found in this module.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m multiplexer ports. \n" + ], + "text/html": [ + "
Removed 0 multiplexer ports.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.4\u001b[0m. Executing OPT_REDUCE pass \u001b[1m(\u001b[0mconsolidate $*mux and $reduce_* inputs\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45.4. Executing OPT_REDUCE pass (consolidate $*mux and $reduce_* inputs).                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing cells in module \\tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing cells in module \\tapeout_vedic_mac_16.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Performed a total of \u001b[1;36m0\u001b[0m changes. \n" + ], + "text/html": [ + "
Performed a total of 0 changes.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.5\u001b[0m. Executing OPT_MERGE pass \u001b[1m(\u001b[0mdetect identical cells\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45.5. Executing OPT_MERGE pass (detect identical cells).                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding identical cells in module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Finding identical cells in module `\\tapeout_vedic_mac_16'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed a total of \u001b[1;36m0\u001b[0m cells. \n" + ], + "text/html": [ + "
Removed a total of 0 cells.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.6\u001b[0m. Executing OPT_DFF pass \u001b[1m(\u001b[0mperform DFF optimizations\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45.6. Executing OPT_DFF pass (perform DFF optimizations).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.7\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45.7. Executing OPT_CLEAN pass (remove unused cells and wires).                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.8\u001b[0m. Executing OPT_EXPR pass \u001b[1m(\u001b[0mperform const folding\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
45.8. Executing OPT_EXPR pass (perform const folding).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Optimizing module tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Optimizing module tapeout_vedic_mac_16.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m45.9\u001b[0m. Finished OPT passes. \u001b[1m(\u001b[0mThere is nothing left to do.\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
45.9. Finished OPT passes. (There is nothing left to do.)                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m46\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
46. Executing OPT_CLEAN pass (remove unused cells and wires).                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m unused cells and \u001b[1;36m170\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 0 unused cells and 170 unused wires.                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m170\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~170 debug messages>                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
{                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"creator\"\u001b[0m: \u001b[32m\"Yosys 0.38 \u001b[0m\u001b[32m(\u001b[0m\u001b[32mgit sha1 543faed9c8c, clang++ 17.0.6 -fPIC -Os\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\"\u001b[0m, \n" + ], + "text/html": [ + "
\"creator\": \"Yosys 0.38 (git sha1 543faed9c8c, clang++ 17.0.6 -fPIC -Os)\",                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"invocation\"\u001b[0m: \u001b[32m\"stat -json -liberty /content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib \"\u001b[0m, \n" + ], + "text/html": [ + "
\"invocation\": \"stat -json -liberty /content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib \",               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"modules\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"modules\": {                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"\\\\tapeout_vedic_mac_16\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"\\\\tapeout_vedic_mac_16\": {                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wires\"\u001b[0m: \u001b[1;36m2419\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wires\":         2419,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wire_bits\"\u001b[0m: \u001b[1;36m2549\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wire_bits\":     2549,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wires\"\u001b[0m: \u001b[1;36m9\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wires\":     9,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wire_bits\"\u001b[0m: \u001b[1;36m139\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wire_bits\": 139,                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memories\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memories\":      0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memory_bits\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memory_bits\":   0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_processes\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_processes\":     0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells\"\u001b[0m: \u001b[1;36m2474\u001b[0m, \n" + ], + "text/html": [ + "
\"num_cells\":         2474,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells_by_type\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"num_cells_by_type\": {                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_ANDNOT_\"\u001b[0m: \u001b[1;36m648\u001b[0m, \n" + ], + "text/html": [ + "
\"$_ANDNOT_\": 648,                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_AND_\"\u001b[0m: \u001b[1;36m317\u001b[0m, \n" + ], + "text/html": [ + "
\"$_AND_\": 317,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_DFFE_PN0P_\"\u001b[0m: \u001b[1;36m32\u001b[0m, \n" + ], + "text/html": [ + "
\"$_DFFE_PN0P_\": 32,                                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NAND_\"\u001b[0m: \u001b[1;36m27\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NAND_\": 27,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NOR_\"\u001b[0m: \u001b[1;36m150\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NOR_\": 150,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NOT_\"\u001b[0m: \u001b[1;36m173\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NOT_\": 173,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_ORNOT_\"\u001b[0m: \u001b[1;36m145\u001b[0m, \n" + ], + "text/html": [ + "
\"$_ORNOT_\": 145,                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_OR_\"\u001b[0m: \u001b[1;36m192\u001b[0m, \n" + ], + "text/html": [ + "
\"$_OR_\": 192,                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_XNOR_\"\u001b[0m: \u001b[1;36m202\u001b[0m, \n" + ], + "text/html": [ + "
\"$_XNOR_\": 202,                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_XOR_\"\u001b[0m: \u001b[1;36m588\u001b[0m \n" + ], + "text/html": [ + "
\"$_XOR_\": 588                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m, \n" + ], + "text/html": [ + "
},                                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"design\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"design\": {                                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wires\"\u001b[0m: \u001b[1;36m2419\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wires\":         2419,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wire_bits\"\u001b[0m: \u001b[1;36m2549\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wire_bits\":     2549,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wires\"\u001b[0m: \u001b[1;36m9\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wires\":     9,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wire_bits\"\u001b[0m: \u001b[1;36m139\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wire_bits\": 139,                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memories\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memories\":      0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memory_bits\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memory_bits\":   0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_processes\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_processes\":     0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells\"\u001b[0m: \u001b[1;36m2474\u001b[0m, \n" + ], + "text/html": [ + "
\"num_cells\":         2474,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells_by_type\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"num_cells_by_type\": {                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_ANDNOT_\"\u001b[0m: \u001b[1;36m648\u001b[0m, \n" + ], + "text/html": [ + "
\"$_ANDNOT_\": 648,                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_AND_\"\u001b[0m: \u001b[1;36m317\u001b[0m, \n" + ], + "text/html": [ + "
\"$_AND_\": 317,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_DFFE_PN0P_\"\u001b[0m: \u001b[1;36m32\u001b[0m, \n" + ], + "text/html": [ + "
\"$_DFFE_PN0P_\": 32,                                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NAND_\"\u001b[0m: \u001b[1;36m27\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NAND_\": 27,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NOR_\"\u001b[0m: \u001b[1;36m150\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NOR_\": 150,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NOT_\"\u001b[0m: \u001b[1;36m173\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NOT_\": 173,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_ORNOT_\"\u001b[0m: \u001b[1;36m145\u001b[0m, \n" + ], + "text/html": [ + "
\"$_ORNOT_\": 145,                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_OR_\"\u001b[0m: \u001b[1;36m192\u001b[0m, \n" + ], + "text/html": [ + "
\"$_OR_\": 192,                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_XNOR_\"\u001b[0m: \u001b[1;36m202\u001b[0m, \n" + ], + "text/html": [ + "
\"$_XNOR_\": 202,                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_XOR_\"\u001b[0m: \u001b[1;36m588\u001b[0m \n" + ], + "text/html": [ + "
\"$_XOR_\": 588                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m47\u001b[0m. Printing statistics. \n" + ], + "text/html": [ + "
47. Printing statistics.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "=== tapeout_vedic_mac_16 === \n" + ], + "text/html": [ + "
=== tapeout_vedic_mac_16 ===                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of wires: \u001b[1;36m2419\u001b[0m \n" + ], + "text/html": [ + "
Number of wires:               2419                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of wire bits: \u001b[1;36m2549\u001b[0m \n" + ], + "text/html": [ + "
Number of wire bits:           2549                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of public wires: \u001b[1;36m9\u001b[0m \n" + ], + "text/html": [ + "
Number of public wires:           9                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of public wire bits: \u001b[1;36m139\u001b[0m \n" + ], + "text/html": [ + "
Number of public wire bits:     139                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of memories: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of memories:               0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of memory bits: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of memory bits:            0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of processes: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of processes:              0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of cells: \u001b[1;36m2474\u001b[0m \n" + ], + "text/html": [ + "
Number of cells:               2474                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_ANDNOT_ \u001b[1;36m648\u001b[0m \n" + ], + "text/html": [ + "
$_ANDNOT_                     648                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_AND_ \u001b[1;36m317\u001b[0m \n" + ], + "text/html": [ + "
$_AND_                        317                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_DFFE_PN0P_ \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
$_DFFE_PN0P_                   32                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NAND_ \u001b[1;36m27\u001b[0m \n" + ], + "text/html": [ + "
$_NAND_                        27                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NOR_ \u001b[1;36m150\u001b[0m \n" + ], + "text/html": [ + "
$_NOR_                        150                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NOT_ \u001b[1;36m173\u001b[0m \n" + ], + "text/html": [ + "
$_NOT_                        173                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_ORNOT_ \u001b[1;36m145\u001b[0m \n" + ], + "text/html": [ + "
$_ORNOT_                      145                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_OR_ \u001b[1;36m192\u001b[0m \n" + ], + "text/html": [ + "
$_OR_                         192                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_XNOR_ \u001b[1;36m202\u001b[0m \n" + ], + "text/html": [ + "
$_XNOR_                       202                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_XOR_ \u001b[1;36m588\u001b[0m \n" + ], + "text/html": [ + "
$_XOR_                        588                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_NOT_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_NOT_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_AND_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_AND_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_NAND_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_NAND_ is unknown!                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_OR_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_OR_ is unknown!                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_NOR_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_NOR_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_XOR_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_XOR_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_XNOR_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_XNOR_ is unknown!                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_ANDNOT_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_ANDNOT_ is unknown!                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_ORNOT_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_ORNOT_ is unknown!                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_DFFE_PN0P_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_DFFE_PN0P_ is unknown!                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "mapping tbuf \n" + ], + "text/html": [ + "
mapping tbuf                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Applying tri-state buffer mapping from \n", + "\u001b[32m'/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/tribuff_map.v'\u001b[0m\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Applying tri-state buffer mapping from                                                                      \n",
+              "'/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/tribuff_map.v'...                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m48\u001b[0m. Executing TECHMAP pass \u001b[1m(\u001b[0mmap to technology primitives\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
48. Executing TECHMAP pass (map to technology primitives).                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m48.1\u001b[0m. Executing Verilog-\u001b[1;36m2005\u001b[0m frontend: \u001b[35m/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/\u001b[0m\u001b[95mtribuff_map.v\u001b[0m \n" + ], + "text/html": [ + "
48.1. Executing Verilog-2005 frontend: /root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/tribuff_map.v      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Parsing Verilog input from `\u001b[35m/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/\u001b[0m\u001b[95mtribuff_map.v\u001b[0m' to AST \n", + "representation. \n" + ], + "text/html": [ + "
Parsing Verilog input from `/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/tribuff_map.v' to AST         \n",
+              "representation.                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\$_TBUF_'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\$_TBUF_'.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Successfully finished Verilog frontend. \n" + ], + "text/html": [ + "
Successfully finished Verilog frontend.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m48.2\u001b[0m. Continuing TECHMAP pass. \n" + ], + "text/html": [ + "
48.2. Continuing TECHMAP pass.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No more expansions possible. \n" + ], + "text/html": [ + "
No more expansions possible.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m3\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~3 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m49\u001b[0m. Executing SIMPLEMAP pass \u001b[1m(\u001b[0mmap simple cells to gate primitives\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
49. Executing SIMPLEMAP pass (map simple cells to gate primitives).                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Applying latch mapping from \u001b[32m'/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/latch_map.v'\u001b[0m\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Applying latch mapping from '/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/latch_map.v'...       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m50\u001b[0m. Executing TECHMAP pass \u001b[1m(\u001b[0mmap to technology primitives\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
50. Executing TECHMAP pass (map to technology primitives).                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m50.1\u001b[0m. Executing Verilog-\u001b[1;36m2005\u001b[0m frontend: \u001b[35m/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/\u001b[0m\u001b[95mlatch_map.v\u001b[0m \n" + ], + "text/html": [ + "
50.1. Executing Verilog-2005 frontend: /root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/latch_map.v        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Parsing Verilog input from `\u001b[35m/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/\u001b[0m\u001b[95mlatch_map.v\u001b[0m' to AST \n", + "representation. \n" + ], + "text/html": [ + "
Parsing Verilog input from `/root/.volare/sky130A/libs.tech/openlane/sky130_fd_sc_hd/latch_map.v' to AST           \n",
+              "representation.                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\$_DLATCH_P_'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\$_DLATCH_P_'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating RTLIL representation for module `\\$_DLATCH_N_'. \n" + ], + "text/html": [ + "
Generating RTLIL representation for module `\\$_DLATCH_N_'.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Successfully finished Verilog frontend. \n" + ], + "text/html": [ + "
Successfully finished Verilog frontend.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m50.2\u001b[0m. Continuing TECHMAP pass. \n" + ], + "text/html": [ + "
50.2. Continuing TECHMAP pass.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No more expansions possible. \n" + ], + "text/html": [ + "
No more expansions possible.                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~4 debug messages>                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m51\u001b[0m. Executing SIMPLEMAP pass \u001b[1m(\u001b[0mmap simple cells to gate primitives\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
51. Executing SIMPLEMAP pass (map simple cells to gate primitives).                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m52\u001b[0m. Executing DFFLIBMAP pass \u001b[1m(\u001b[0mmapping DFF cells to sequential cells from liberty file\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
52. Executing DFFLIBMAP pass (mapping DFF cells to sequential cells from liberty file).                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "cell sky130_fd_sc_hd__dfxtp_2 \u001b[1m(\u001b[0mnoninv, \u001b[33mpins\u001b[0m=\u001b[1;36m3\u001b[0m, \u001b[33marea\u001b[0m=\u001b[1;36m21\u001b[0m\u001b[1;36m.27\u001b[0m\u001b[1m)\u001b[0m is a direct match for cell type $_DFF_P_. \n" + ], + "text/html": [ + "
cell sky130_fd_sc_hd__dfxtp_2 (noninv, pins=3, area=21.27) is a direct match for cell type $_DFF_P_.               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "cell sky130_fd_sc_hd__dfrtp_2 \u001b[1m(\u001b[0mnoninv, \u001b[33mpins\u001b[0m=\u001b[1;36m4\u001b[0m, \u001b[33marea\u001b[0m=\u001b[1;36m26\u001b[0m\u001b[1;36m.28\u001b[0m\u001b[1m)\u001b[0m is a direct match for cell type $_DFF_PN0_. \n" + ], + "text/html": [ + "
cell sky130_fd_sc_hd__dfrtp_2 (noninv, pins=4, area=26.28) is a direct match for cell type $_DFF_PN0_.             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "cell sky130_fd_sc_hd__dfstp_2 \u001b[1m(\u001b[0mnoninv, \u001b[33mpins\u001b[0m=\u001b[1;36m4\u001b[0m, \u001b[33marea\u001b[0m=\u001b[1;36m26\u001b[0m\u001b[1;36m.28\u001b[0m\u001b[1m)\u001b[0m is a direct match for cell type $_DFF_PN1_. \n" + ], + "text/html": [ + "
cell sky130_fd_sc_hd__dfstp_2 (noninv, pins=4, area=26.28) is a direct match for cell type $_DFF_PN1_.             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "cell sky130_fd_sc_hd__dfbbn_2 \u001b[1m(\u001b[0mnoninv, \u001b[33mpins\u001b[0m=\u001b[1;36m6\u001b[0m, \u001b[33marea\u001b[0m=\u001b[1;36m35\u001b[0m\u001b[1;36m.03\u001b[0m\u001b[1m)\u001b[0m is a direct match for cell type $_DFFSR_NNN_. \n" + ], + "text/html": [ + "
cell sky130_fd_sc_hd__dfbbn_2 (noninv, pins=6, area=35.03) is a direct match for cell type $_DFFSR_NNN_.           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "final dff cell mappings: \n" + ], + "text/html": [ + "
final dff cell mappings:                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFF_N_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFF_N_                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\\sky130_fd_sc_hd__dfxtp_2 _DFF_P_ \u001b[1m(\u001b[0m\u001b[1;35m.CLK\u001b[0m\u001b[1m(\u001b[0m C\u001b[1m)\u001b[0m, \u001b[1;35m.D\u001b[0m\u001b[1m(\u001b[0m D\u001b[1m)\u001b[0m, \u001b[1;35m.Q\u001b[0m\u001b[1m(\u001b[0m Q\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m; \n" + ], + "text/html": [ + "
\\sky130_fd_sc_hd__dfxtp_2 _DFF_P_ (.CLK( C), .D( D), .Q( Q));                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFF_NN0_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFF_NN0_                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFF_NN1_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFF_NN1_                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFF_NP0_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFF_NP0_                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFF_NP1_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFF_NP1_                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\\sky130_fd_sc_hd__dfrtp_2 _DFF_PN0_ \u001b[1m(\u001b[0m\u001b[1;35m.CLK\u001b[0m\u001b[1m(\u001b[0m C\u001b[1m)\u001b[0m, \u001b[1;35m.D\u001b[0m\u001b[1m(\u001b[0m D\u001b[1m)\u001b[0m, \u001b[1;35m.Q\u001b[0m\u001b[1m(\u001b[0m Q\u001b[1m)\u001b[0m, \u001b[1;35m.RESET_B\u001b[0m\u001b[1m(\u001b[0m R\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m; \n" + ], + "text/html": [ + "
\\sky130_fd_sc_hd__dfrtp_2 _DFF_PN0_ (.CLK( C), .D( D), .Q( Q), .RESET_B( R));                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\\sky130_fd_sc_hd__dfstp_2 _DFF_PN1_ \u001b[1m(\u001b[0m\u001b[1;35m.CLK\u001b[0m\u001b[1m(\u001b[0m C\u001b[1m)\u001b[0m, \u001b[1;35m.D\u001b[0m\u001b[1m(\u001b[0m D\u001b[1m)\u001b[0m, \u001b[1;35m.Q\u001b[0m\u001b[1m(\u001b[0m Q\u001b[1m)\u001b[0m, \u001b[1;35m.SET_B\u001b[0m\u001b[1m(\u001b[0m R\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m; \n" + ], + "text/html": [ + "
\\sky130_fd_sc_hd__dfstp_2 _DFF_PN1_ (.CLK( C), .D( D), .Q( Q), .SET_B( R));                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFF_PP0_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFF_PP0_                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFF_PP1_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFF_PP1_                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\\sky130_fd_sc_hd__dfbbn_2 _DFFSR_NNN_ \u001b[1m(\u001b[0m\u001b[1;35m.CLK_N\u001b[0m\u001b[1m(\u001b[0m C\u001b[1m)\u001b[0m, \u001b[1;35m.D\u001b[0m\u001b[1m(\u001b[0m D\u001b[1m)\u001b[0m, \u001b[1;35m.Q\u001b[0m\u001b[1m(\u001b[0m Q\u001b[1m)\u001b[0m, \u001b[1;35m.Q_N\u001b[0m\u001b[1m(\u001b[0m~Q\u001b[1m)\u001b[0m, \u001b[1;35m.RESET_B\u001b[0m\u001b[1m(\u001b[0m R\u001b[1m)\u001b[0m, \u001b[1;35m.SET_B\u001b[0m\u001b[1m(\u001b[0m S\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m; \n" + ], + "text/html": [ + "
\\sky130_fd_sc_hd__dfbbn_2 _DFFSR_NNN_ (.CLK_N( C), .D( D), .Q( Q), .Q_N(~Q), .RESET_B( R), .SET_B( S));            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFFSR_NNP_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFFSR_NNP_                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFFSR_NPN_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFFSR_NPN_                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFFSR_NPP_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFFSR_NPP_                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFFSR_PNN_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFFSR_PNN_                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFFSR_PNP_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFFSR_PNP_                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFFSR_PPN_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFFSR_PPN_                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "unmapped dff cell: $_DFFSR_PPP_ \n" + ], + "text/html": [ + "
unmapped dff cell: $_DFFSR_PPP_                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m52.1\u001b[0m. Executing DFFLEGALIZE pass \u001b[1m(\u001b[0mconvert FFs to types supported by the target\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
52.1. Executing DFFLEGALIZE pass (convert FFs to types supported by the target).                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Mapping DFF cells in module `\\tapeout_vedic_mac_16': \n" + ], + "text/html": [ + "
Mapping DFF cells in module `\\tapeout_vedic_mac_16':                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "mapped \u001b[1;36m32\u001b[0m $_DFF_PN0_ cells to \\sky130_fd_sc_hd__dfrtp_2 cells. \n" + ], + "text/html": [ + "
mapped 32 $_DFF_PN0_ cells to \\sky130_fd_sc_hd__dfrtp_2 cells.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
{                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"creator\"\u001b[0m: \u001b[32m\"Yosys 0.38 \u001b[0m\u001b[32m(\u001b[0m\u001b[32mgit sha1 543faed9c8c, clang++ 17.0.6 -fPIC -Os\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\"\u001b[0m, \n" + ], + "text/html": [ + "
\"creator\": \"Yosys 0.38 (git sha1 543faed9c8c, clang++ 17.0.6 -fPIC -Os)\",                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"invocation\"\u001b[0m: \u001b[32m\"stat -json -liberty /content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib \"\u001b[0m, \n" + ], + "text/html": [ + "
\"invocation\": \"stat -json -liberty /content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib \",               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"modules\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"modules\": {                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"\\\\tapeout_vedic_mac_16\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"\\\\tapeout_vedic_mac_16\": {                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wires\"\u001b[0m: \u001b[1;36m2451\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wires\":         2451,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wire_bits\"\u001b[0m: \u001b[1;36m2581\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wire_bits\":     2581,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wires\"\u001b[0m: \u001b[1;36m9\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wires\":     9,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wire_bits\"\u001b[0m: \u001b[1;36m139\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wire_bits\": 139,                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memories\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memories\":      0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memory_bits\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memory_bits\":   0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_processes\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_processes\":     0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells\"\u001b[0m: \u001b[1;36m2506\u001b[0m, \n" + ], + "text/html": [ + "
\"num_cells\":         2506,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"area\"\u001b[0m: \u001b[1;36m840.806400\u001b[0m, \n" + ], + "text/html": [ + "
\"area\":              840.806400,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells_by_type\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"num_cells_by_type\": {                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_ANDNOT_\"\u001b[0m: \u001b[1;36m648\u001b[0m, \n" + ], + "text/html": [ + "
\"$_ANDNOT_\": 648,                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_AND_\"\u001b[0m: \u001b[1;36m317\u001b[0m, \n" + ], + "text/html": [ + "
\"$_AND_\": 317,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_MUX_\"\u001b[0m: \u001b[1;36m32\u001b[0m, \n" + ], + "text/html": [ + "
\"$_MUX_\": 32,                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NAND_\"\u001b[0m: \u001b[1;36m27\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NAND_\": 27,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NOR_\"\u001b[0m: \u001b[1;36m150\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NOR_\": 150,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NOT_\"\u001b[0m: \u001b[1;36m173\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NOT_\": 173,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_ORNOT_\"\u001b[0m: \u001b[1;36m145\u001b[0m, \n" + ], + "text/html": [ + "
\"$_ORNOT_\": 145,                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_OR_\"\u001b[0m: \u001b[1;36m192\u001b[0m, \n" + ], + "text/html": [ + "
\"$_OR_\": 192,                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_XNOR_\"\u001b[0m: \u001b[1;36m202\u001b[0m, \n" + ], + "text/html": [ + "
\"$_XNOR_\": 202,                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_XOR_\"\u001b[0m: \u001b[1;36m588\u001b[0m, \n" + ], + "text/html": [ + "
\"$_XOR_\": 588,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__dfrtp_2\"\u001b[0m: \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__dfrtp_2\": 32                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m, \n" + ], + "text/html": [ + "
},                                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"design\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"design\": {                                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wires\"\u001b[0m: \u001b[1;36m2451\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wires\":         2451,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wire_bits\"\u001b[0m: \u001b[1;36m2581\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wire_bits\":     2581,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wires\"\u001b[0m: \u001b[1;36m9\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wires\":     9,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wire_bits\"\u001b[0m: \u001b[1;36m139\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wire_bits\": 139,                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memories\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memories\":      0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memory_bits\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memory_bits\":   0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_processes\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_processes\":     0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells\"\u001b[0m: \u001b[1;36m2506\u001b[0m, \n" + ], + "text/html": [ + "
\"num_cells\":         2506,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"area\"\u001b[0m: \u001b[1;36m840.806400\u001b[0m, \n" + ], + "text/html": [ + "
\"area\":              840.806400,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells_by_type\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"num_cells_by_type\": {                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_ANDNOT_\"\u001b[0m: \u001b[1;36m648\u001b[0m, \n" + ], + "text/html": [ + "
\"$_ANDNOT_\": 648,                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_AND_\"\u001b[0m: \u001b[1;36m317\u001b[0m, \n" + ], + "text/html": [ + "
\"$_AND_\": 317,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_MUX_\"\u001b[0m: \u001b[1;36m32\u001b[0m, \n" + ], + "text/html": [ + "
\"$_MUX_\": 32,                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NAND_\"\u001b[0m: \u001b[1;36m27\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NAND_\": 27,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NOR_\"\u001b[0m: \u001b[1;36m150\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NOR_\": 150,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_NOT_\"\u001b[0m: \u001b[1;36m173\u001b[0m, \n" + ], + "text/html": [ + "
\"$_NOT_\": 173,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_ORNOT_\"\u001b[0m: \u001b[1;36m145\u001b[0m, \n" + ], + "text/html": [ + "
\"$_ORNOT_\": 145,                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_OR_\"\u001b[0m: \u001b[1;36m192\u001b[0m, \n" + ], + "text/html": [ + "
\"$_OR_\": 192,                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_XNOR_\"\u001b[0m: \u001b[1;36m202\u001b[0m, \n" + ], + "text/html": [ + "
\"$_XNOR_\": 202,                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"$_XOR_\"\u001b[0m: \u001b[1;36m588\u001b[0m, \n" + ], + "text/html": [ + "
\"$_XOR_\": 588,                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__dfrtp_2\"\u001b[0m: \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__dfrtp_2\": 32                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m53\u001b[0m. Printing statistics. \n" + ], + "text/html": [ + "
53. Printing statistics.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "=== tapeout_vedic_mac_16 === \n" + ], + "text/html": [ + "
=== tapeout_vedic_mac_16 ===                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of wires: \u001b[1;36m2451\u001b[0m \n" + ], + "text/html": [ + "
Number of wires:               2451                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of wire bits: \u001b[1;36m2581\u001b[0m \n" + ], + "text/html": [ + "
Number of wire bits:           2581                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of public wires: \u001b[1;36m9\u001b[0m \n" + ], + "text/html": [ + "
Number of public wires:           9                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of public wire bits: \u001b[1;36m139\u001b[0m \n" + ], + "text/html": [ + "
Number of public wire bits:     139                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of memories: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of memories:               0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of memory bits: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of memory bits:            0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of processes: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of processes:              0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of cells: \u001b[1;36m2506\u001b[0m \n" + ], + "text/html": [ + "
Number of cells:               2506                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_ANDNOT_ \u001b[1;36m648\u001b[0m \n" + ], + "text/html": [ + "
$_ANDNOT_                     648                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_AND_ \u001b[1;36m317\u001b[0m \n" + ], + "text/html": [ + "
$_AND_                        317                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_MUX_ \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
$_MUX_                         32                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NAND_ \u001b[1;36m27\u001b[0m \n" + ], + "text/html": [ + "
$_NAND_                        27                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NOR_ \u001b[1;36m150\u001b[0m \n" + ], + "text/html": [ + "
$_NOR_                        150                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_NOT_ \u001b[1;36m173\u001b[0m \n" + ], + "text/html": [ + "
$_NOT_                        173                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_ORNOT_ \u001b[1;36m145\u001b[0m \n" + ], + "text/html": [ + "
$_ORNOT_                      145                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_OR_ \u001b[1;36m192\u001b[0m \n" + ], + "text/html": [ + "
$_OR_                         192                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_XNOR_ \u001b[1;36m202\u001b[0m \n" + ], + "text/html": [ + "
$_XNOR_                       202                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "$_XOR_ \u001b[1;36m588\u001b[0m \n" + ], + "text/html": [ + "
$_XOR_                        588                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__dfrtp_2 \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__dfrtp_2       32                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_NOT_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_NOT_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_AND_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_AND_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_NAND_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_NAND_ is unknown!                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_OR_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_OR_ is unknown!                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_NOR_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_NOR_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_XOR_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_XOR_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_XNOR_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_XNOR_ is unknown!                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_ANDNOT_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_ANDNOT_ is unknown!                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_ORNOT_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_ORNOT_ is unknown!                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Area for cell type $_MUX_ is unknown! \n" + ], + "text/html": [ + "
Area for cell type $_MUX_ is unknown!                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Chip area for module \u001b[32m'\\tapeout_vedic_mac_16'\u001b[0m: \u001b[1;36m840.806400\u001b[0m \n" + ], + "text/html": [ + "
Chip area for module '\\tapeout_vedic_mac_16': 840.806400                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using strategy \u001b[32m\"AREA 0\"\u001b[0m\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Using strategy \"AREA 0\"...                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m54\u001b[0m. Executing ABC pass \u001b[1m(\u001b[0mtechnology mapping using ABC\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
54. Executing ABC pass (technology mapping using ABC).                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m54.1\u001b[0m. Extracting gate netlist of module `\\tapeout_vedic_mac_16' to `\u001b[35m/tmp/yosys-abc-7hChV6/\u001b[0m\u001b[95minput.blif\u001b[0m'.. \n" + ], + "text/html": [ + "
54.1. Extracting gate netlist of module `\\tapeout_vedic_mac_16' to `/tmp/yosys-abc-7hChV6/input.blif'..            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracted \u001b[1;36m2474\u001b[0m gates and \u001b[1;36m2579\u001b[0m wires to a netlist network with \u001b[1;36m105\u001b[0m inputs and \u001b[1;36m32\u001b[0m outputs. \n" + ], + "text/html": [ + "
Extracted 2474 gates and 2579 wires to a netlist network with 105 inputs and 32 outputs.                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m54.1\u001b[0m.\u001b[1;36m1\u001b[0m. Executing ABC. \n" + ], + "text/html": [ + "
54.1.1. Executing ABC.                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running ABC command: \u001b[32m\"/nix/store/wq2q0njg3sx8wvj2akz7x1qxwyrv9xlr-yosys-abc/bin/abc\"\u001b[0m -s -f \n", + "\u001b[35m/tmp/yosys-abc-7hChV6/\u001b[0m\u001b[95mabc.script\u001b[0m \u001b[1;36m2\u001b[0m>&\u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Running ABC command: \"/nix/store/wq2q0njg3sx8wvj2akz7x1qxwyrv9xlr-yosys-abc/bin/abc\" -s -f                         \n",
+              "/tmp/yosys-abc-7hChV6/abc.script 2>&1                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: ABC command line: \u001b[32m\"source /tmp/yosys-abc-7hChV6/abc.script\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: ABC command line: \"source /tmp/yosys-abc-7hChV6/abc.script\".                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \n" + ], + "text/html": [ + "
ABC:                                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + read_blif \u001b[35m/tmp/yosys-abc-7hChV6/\u001b[0m\u001b[95minput.blif\u001b[0m \n" + ], + "text/html": [ + "
ABC: + read_blif /tmp/yosys-abc-7hChV6/input.blif                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + read_lib -w \u001b[35m/content/openlane_run/tmp/\u001b[0m\u001b[95m6b12b63317314492a76eab044b6bea4d.lib\u001b[0m \n" + ], + "text/html": [ + "
ABC: + read_lib -w /content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Parsing finished successfully. Parsing time = \u001b[1;36m0.38\u001b[0m sec \n" + ], + "text/html": [ + "
ABC: Parsing finished successfully.  Parsing time =     0.38 sec                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfbbn_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfbbn_2\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfrbp_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfrbp_2\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfrtp_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfrtp_2\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfrtp_4\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfrtp_4\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfsbp_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfsbp_2\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfstp_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfstp_2\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfstp_4\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfstp_4\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfxbp_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfxbp_2\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfxtp_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfxtp_2\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dfxtp_4\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dfxtp_4\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dlxtn_1\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dlxtn_1\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dlxtn_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dlxtn_2\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dlxtn_4\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dlxtn_4\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped sequential cell \u001b[32m\"sky130_fd_sc_hd__dlxtp_1\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped sequential cell \"sky130_fd_sc_hd__dlxtp_1\".                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped three-state cell \u001b[32m\"sky130_fd_sc_hd__ebufn_2\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped three-state cell \"sky130_fd_sc_hd__ebufn_2\".                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped three-state cell \u001b[32m\"sky130_fd_sc_hd__ebufn_4\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped three-state cell \"sky130_fd_sc_hd__ebufn_4\".                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: \u001b[1;35mScl_LibertyReadGenlib\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m skipped three-state cell \u001b[32m\"sky130_fd_sc_hd__ebufn_8\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Scl_LibertyReadGenlib() skipped three-state cell \"sky130_fd_sc_hd__ebufn_8\".                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Library \u001b[32m\"sky130_fd_sc_hd__tt_025C_1v80\"\u001b[0m from \u001b[32m\"/content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib\"\u001b[0m \n", + "has \u001b[1;36m175\u001b[0m cells \u001b[1m(\u001b[0m\u001b[1;36m17\u001b[0m skipped: \u001b[1;36m14\u001b[0m seq; \u001b[1;36m3\u001b[0m tri-state; \u001b[1;36m0\u001b[0m no func; \u001b[1;36m0\u001b[0m dont_use\u001b[1m)\u001b[0m. Time = \u001b[1;36m0.53\u001b[0m sec \n" + ], + "text/html": [ + "
ABC: Library \"sky130_fd_sc_hd__tt_025C_1v80\" from \"/content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib\" \n",
+              "has 175 cells (17 skipped: 14 seq; 3 tri-state; 0 no func; 0 dont_use).  Time =     0.53 sec                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Memory = \u001b[1;36m9.54\u001b[0m MB. Time = \u001b[1;36m0.53\u001b[0m sec \n" + ], + "text/html": [ + "
ABC: Memory =    9.54 MB. Time =     0.53 sec                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Warning: Detected \u001b[1;36m2\u001b[0m multi-output gates \u001b[1m(\u001b[0mfor example, \u001b[32m\"sky130_fd_sc_hd__fa_1\"\u001b[0m\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Warning: Detected 2 multi-output gates (for example, \"sky130_fd_sc_hd__fa_1\").                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + read_constr -v \u001b[35m/content/openlane_run/18-yosys-synthesis/\u001b[0m\u001b[95msynthesis.sdc\u001b[0m \n" + ], + "text/html": [ + "
ABC: + read_constr -v /content/openlane_run/18-yosys-synthesis/synthesis.sdc                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Setting driving cell to be \u001b[32m\"sky130_fd_sc_hd__inv_2/Y\"\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Setting driving cell to be \"sky130_fd_sc_hd__inv_2/Y\".                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Setting output load to be \u001b[1;36m33.442001\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Setting output load to be 33.442001.                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + read_constr \u001b[35m/content/openlane_run/18-yosys-synthesis/\u001b[0m\u001b[95msynthesis.sdc\u001b[0m \n" + ], + "text/html": [ + "
ABC: + read_constr /content/openlane_run/18-yosys-synthesis/synthesis.sdc                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + fx \n" + ], + "text/html": [ + "
ABC: + fx                                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + mfs \n" + ], + "text/html": [ + "
ABC: + mfs                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + strash \n" + ], + "text/html": [ + "
ABC: + strash                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l \n" + ], + "text/html": [ + "
ABC: + drf -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l \n" + ], + "text/html": [ + "
ABC: + drw -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l \n" + ], + "text/html": [ + "
ABC: + drf -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l \n" + ], + "text/html": [ + "
ABC: + drw -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l -z \n" + ], + "text/html": [ + "
ABC: + drw -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l -z \n" + ], + "text/html": [ + "
ABC: + drf -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l -z \n" + ], + "text/html": [ + "
ABC: + drw -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + retime -D -D \u001b[1;36m10000\u001b[0m -M \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
ABC: + retime -D -D 10000 -M 5                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + scleanup \n" + ], + "text/html": [ + "
ABC: + scleanup                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Error: The network is combinational. \n" + ], + "text/html": [ + "
ABC: Error: The network is combinational.                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + fraig_store \n" + ], + "text/html": [ + "
ABC: + fraig_store                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + fraig_store \n" + ], + "text/html": [ + "
ABC: + fraig_store                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l \n" + ], + "text/html": [ + "
ABC: + drw -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l \n" + ], + "text/html": [ + "
ABC: + drf -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l \n" + ], + "text/html": [ + "
ABC: + drw -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l -z \n" + ], + "text/html": [ + "
ABC: + drw -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l -z \n" + ], + "text/html": [ + "
ABC: + drf -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l -z \n" + ], + "text/html": [ + "
ABC: + drw -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + fraig_store \n" + ], + "text/html": [ + "
ABC: + fraig_store                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l \n" + ], + "text/html": [ + "
ABC: + drw -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l \n" + ], + "text/html": [ + "
ABC: + drf -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l \n" + ], + "text/html": [ + "
ABC: + drw -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l -z \n" + ], + "text/html": [ + "
ABC: + drw -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l -z \n" + ], + "text/html": [ + "
ABC: + drf -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l -z \n" + ], + "text/html": [ + "
ABC: + drw -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + fraig_store \n" + ], + "text/html": [ + "
ABC: + fraig_store                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l \n" + ], + "text/html": [ + "
ABC: + drw -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l \n" + ], + "text/html": [ + "
ABC: + drf -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l \n" + ], + "text/html": [ + "
ABC: + drw -l                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l -z \n" + ], + "text/html": [ + "
ABC: + drw -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drf -l -z \n" + ], + "text/html": [ + "
ABC: + drf -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + drw -l -z \n" + ], + "text/html": [ + "
ABC: + drw -l -z                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + balance \n" + ], + "text/html": [ + "
ABC: + balance                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + fraig_store \n" + ], + "text/html": [ + "
ABC: + fraig_store                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + fraig_restore \n" + ], + "text/html": [ + "
ABC: + fraig_restore                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + amap -m -Q \u001b[1;36m0.1\u001b[0m -F \u001b[1;36m20\u001b[0m -A \u001b[1;36m20\u001b[0m -C \u001b[1;36m5000\u001b[0m \n" + ], + "text/html": [ + "
ABC: + amap -m -Q 0.1 -F 20 -A 20 -C 5000                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + retime -D -D \u001b[1;36m10000\u001b[0m \n" + ], + "text/html": [ + "
ABC: + retime -D -D 10000                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + &get -n \n" + ], + "text/html": [ + "
ABC: + &get -n                                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + &st \n" + ], + "text/html": [ + "
ABC: + &st                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + &dch \n" + ], + "text/html": [ + "
ABC: + &dch                                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + &nf \n" + ], + "text/html": [ + "
ABC: + &nf                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + &put \n" + ], + "text/html": [ + "
ABC: + &put                                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + \n" + ], + "text/html": [ + "
ABC: +                                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + stime -p \n" + ], + "text/html": [ + "
ABC: + stime -p                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Cannot find the default PI driving cell \u001b[1m(\u001b[0msky130_fd_sc_hd__inv_2/Y\u001b[1m)\u001b[0m in the library. \n" + ], + "text/html": [ + "
ABC: Cannot find the default PI driving cell (sky130_fd_sc_hd__inv_2/Y) in the library.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: WireLoad = \u001b[32m\"none\"\u001b[0m Gates = \u001b[1;36m1793\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m1.6\u001b[0m %\u001b[1m)\u001b[0m Cap = \u001b[1;36m9.3\u001b[0m ff \u001b[1m(\u001b[0m \u001b[1;36m1.3\u001b[0m %\u001b[1m)\u001b[0m Area = \u001b[1;36m16490.82\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m96.0\u001b[0m %\u001b[1m)\u001b[0m Delay =\n", + "\u001b[1;36m9944.65\u001b[0m ps \u001b[1m(\u001b[0m \u001b[1;36m3.8\u001b[0m %\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
ABC: WireLoad = \"none\"  Gates =   1793 (  1.6 %)   Cap =  9.3 ff (  1.3 %)   Area =    16490.82 ( 96.0 %)   Delay =\n",
+              "9944.65 ps  (  3.8 %)                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m0\u001b[0m -- \u001b[1;36m2\u001b[0m : \u001b[1;36m0\u001b[0m \u001b[1;36m22\u001b[0m pi A = \u001b[1;36m0.00\u001b[0m Df = \u001b[1;36m0.0\u001b[0m \u001b[1;36m-0.0\u001b[0m ps S = \u001b[1;36m0.0\u001b[0m ps Cin = \n", + "\u001b[1;36m0.0\u001b[0m ff Cout = \u001b[1;36m73.8\u001b[0m ff Cmax = \u001b[1;36m0.0\u001b[0m ff G = \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  0 --       2 : 0   22 pi                        A =   0.00  Df =   0.0   -0.0 ps  S =   0.0 ps  Cin =   \n",
+              "0.0 ff  Cout =  73.8 ff  Cmax =   0.0 ff  G =    0                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m1\u001b[0m -- \u001b[1;36m182\u001b[0m : \u001b[1;36m5\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__o2111a_2 A = \u001b[1;36m12.51\u001b[0m Df = \u001b[1;36m248.0\u001b[0m \u001b[1;36m-50.6\u001b[0m ps S = \u001b[1;36m61.4\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m6.3\u001b[0m ff Cmax = \u001b[1;36m299.4\u001b[0m ff G = \u001b[1;36m247\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  1 --     182 : 5    2 sky130_fd_sc_hd__o2111a_2 A =  12.51  Df = 248.0  -50.6 ps  S =  61.4 ps  Cin =   \n",
+              "2.4 ff  Cout =   6.3 ff  Cmax = 299.4 ff  G =  247                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m2\u001b[0m -- \u001b[1;36m183\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m4\u001b[0m sky130_fd_sc_hd__and3_2 A = \u001b[1;36m7.51\u001b[0m Df = \u001b[1;36m498.8\u001b[0m \u001b[1;36m-57.4\u001b[0m ps S = \u001b[1;36m122.0\u001b[0m ps Cin = \n", + "\u001b[1;36m1.5\u001b[0m ff Cout = \u001b[1;36m20.1\u001b[0m ff Cmax = \u001b[1;36m309.5\u001b[0m ff G = \u001b[1;36m1297\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  2 --     183 : 3    4 sky130_fd_sc_hd__and3_2   A =   7.51  Df = 498.8  -57.4 ps  S = 122.0 ps  Cin =   \n",
+              "1.5 ff  Cout =  20.1 ff  Cmax = 309.5 ff  G = 1297                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m3\u001b[0m -- \u001b[1;36m185\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m4\u001b[0m sky130_fd_sc_hd__or3b_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m1032.2\u001b[0m \u001b[1;36m-403.8\u001b[0m ps S = \u001b[1;36m120.9\u001b[0m ps Cin = \n", + "\u001b[1;36m1.5\u001b[0m ff Cout = \u001b[1;36m16.8\u001b[0m ff Cmax = \u001b[1;36m269.2\u001b[0m ff G = \u001b[1;36m1072\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  3 --     185 : 3    4 sky130_fd_sc_hd__or3b_2   A =   8.76  Df =1032.2 -403.8 ps  S = 120.9 ps  Cin =   \n",
+              "1.5 ff  Cout =  16.8 ff  Cmax = 269.2 ff  G = 1072                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m4\u001b[0m -- \u001b[1;36m187\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m4\u001b[0m sky130_fd_sc_hd__and3_2 A = \u001b[1;36m7.51\u001b[0m Df =\u001b[1;36m1302.7\u001b[0m \u001b[1;36m-380.5\u001b[0m ps S = \u001b[1;36m124.6\u001b[0m ps Cin = \n", + "\u001b[1;36m1.5\u001b[0m ff Cout = \u001b[1;36m20.7\u001b[0m ff Cmax = \u001b[1;36m309.5\u001b[0m ff G = \u001b[1;36m1337\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  4 --     187 : 3    4 sky130_fd_sc_hd__and3_2   A =   7.51  Df =1302.7 -380.5 ps  S = 124.6 ps  Cin =   \n",
+              "1.5 ff  Cout =  20.7 ff  Cmax = 309.5 ff  G = 1337                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m5\u001b[0m -- \u001b[1;36m269\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m1\u001b[0m sky130_fd_sc_hd__o21a_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m1522.5\u001b[0m \u001b[1;36m-449.2\u001b[0m ps S = \u001b[1;36m43.2\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m4.7\u001b[0m ff Cmax = \u001b[1;36m294.8\u001b[0m ff G = \u001b[1;36m185\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  5 --     269 : 3    1 sky130_fd_sc_hd__o21a_2   A =   8.76  Df =1522.5 -449.2 ps  S =  43.2 ps  Cin =   \n",
+              "2.4 ff  Cout =   4.7 ff  Cmax = 294.8 ff  G =  185                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m6\u001b[0m -- \u001b[1;36m270\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a21oi_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m1673.5\u001b[0m \u001b[1;36m-313.6\u001b[0m ps S = \u001b[1;36m163.4\u001b[0m ps Cin = \n", + "\u001b[1;36m4.6\u001b[0m ff Cout = \u001b[1;36m10.6\u001b[0m ff Cmax = \u001b[1;36m128.2\u001b[0m ff G = \u001b[1;36m222\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  6 --     270 : 3    2 sky130_fd_sc_hd__a21oi_2  A =   8.76  Df =1673.5 -313.6 ps  S = 163.4 ps  Cin =   \n",
+              "4.6 ff  Cout =  10.6 ff  Cmax = 128.2 ff  G =  222                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m7\u001b[0m -- \u001b[1;36m276\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__xnor2_2 A = \u001b[1;36m16.27\u001b[0m Df =\u001b[1;36m1883.1\u001b[0m \u001b[1;36m-285.1\u001b[0m ps S = \u001b[1;36m229.4\u001b[0m ps Cin = \n", + "\u001b[1;36m8.5\u001b[0m ff Cout = \u001b[1;36m14.0\u001b[0m ff Cmax = \u001b[1;36m121.8\u001b[0m ff G = \u001b[1;36m157\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  7 --     276 : 2    2 sky130_fd_sc_hd__xnor2_2  A =  16.27  Df =1883.1 -285.1 ps  S = 229.4 ps  Cin =   \n",
+              "8.5 ff  Cout =  14.0 ff  Cmax = 121.8 ff  G =  157                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m8\u001b[0m -- \u001b[1;36m285\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__xor2_2 A = \u001b[1;36m16.27\u001b[0m Df =\u001b[1;36m2083.5\u001b[0m \u001b[1;36m-215.2\u001b[0m ps S = \u001b[1;36m184.3\u001b[0m ps Cin = \n", + "\u001b[1;36m8.6\u001b[0m ff Cout = \u001b[1;36m10.9\u001b[0m ff Cmax = \u001b[1;36m130.0\u001b[0m ff G = \u001b[1;36m123\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  8 --     285 : 2    2 sky130_fd_sc_hd__xor2_2   A =  16.27  Df =2083.5 -215.2 ps  S = 184.3 ps  Cin =   \n",
+              "8.6 ff  Cout =  10.9 ff  Cmax = 130.0 ff  G =  123                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m9\u001b[0m -- \u001b[1;36m286\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__xnor2_2 A = \u001b[1;36m16.27\u001b[0m Df =\u001b[1;36m2266.2\u001b[0m \u001b[1;36m-198.4\u001b[0m ps S = \u001b[1;36m190.9\u001b[0m ps Cin = \n", + "\u001b[1;36m8.5\u001b[0m ff Cout = \u001b[1;36m10.7\u001b[0m ff Cmax = \u001b[1;36m121.8\u001b[0m ff G = \u001b[1;36m120\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path  9 --     286 : 2    2 sky130_fd_sc_hd__xnor2_2  A =  16.27  Df =2266.2 -198.4 ps  S = 190.9 ps  Cin =   \n",
+              "8.5 ff  Cout =  10.7 ff  Cmax = 121.8 ff  G =  120                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m10\u001b[0m -- \u001b[1;36m289\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__xnor2_2 A = \u001b[1;36m16.27\u001b[0m Df =\u001b[1;36m2486.9\u001b[0m \u001b[1;36m-183.4\u001b[0m ps S = \u001b[1;36m223.7\u001b[0m ps Cin = \n", + "\u001b[1;36m8.5\u001b[0m ff Cout = \u001b[1;36m13.5\u001b[0m ff Cmax = \u001b[1;36m121.8\u001b[0m ff G = \u001b[1;36m154\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 10 --     289 : 2    2 sky130_fd_sc_hd__xnor2_2  A =  16.27  Df =2486.9 -183.4 ps  S = 223.7 ps  Cin =   \n",
+              "8.5 ff  Cout =  13.5 ff  Cmax = 121.8 ff  G =  154                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m11\u001b[0m -- \u001b[1;36m304\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a21oi_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m2717.0\u001b[0m \u001b[1;36m-294.2\u001b[0m ps S = \u001b[1;36m203.8\u001b[0m ps Cin = \n", + "\u001b[1;36m4.6\u001b[0m ff Cout = \u001b[1;36m14.4\u001b[0m ff Cmax = \u001b[1;36m128.2\u001b[0m ff G = \u001b[1;36m302\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 11 --     304 : 3    2 sky130_fd_sc_hd__a21oi_2  A =   8.76  Df =2717.0 -294.2 ps  S = 203.8 ps  Cin =   \n",
+              "4.6 ff  Cout =  14.4 ff  Cmax = 128.2 ff  G =  302                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m12\u001b[0m -- \u001b[1;36m357\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__o21ai_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m2830.3\u001b[0m \u001b[1;36m-172.7\u001b[0m ps S = \u001b[1;36m177.3\u001b[0m ps Cin = \n", + "\u001b[1;36m4.5\u001b[0m ff Cout = \u001b[1;36m11.8\u001b[0m ff Cmax = \u001b[1;36m139.2\u001b[0m ff G = \u001b[1;36m249\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 12 --     357 : 3    2 sky130_fd_sc_hd__o21ai_2  A =   8.76  Df =2830.3 -172.7 ps  S = 177.3 ps  Cin =   \n",
+              "4.5 ff  Cout =  11.8 ff  Cmax = 139.2 ff  G =  249                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m13\u001b[0m -- \u001b[1;36m441\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a21o_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m3055.2\u001b[0m \u001b[1;36m-99.5\u001b[0m ps S = \u001b[1;36m80.1\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m13.5\u001b[0m ff Cmax = \u001b[1;36m309.5\u001b[0m ff G = \u001b[1;36m556\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 13 --     441 : 3    2 sky130_fd_sc_hd__a21o_2   A =   8.76  Df =3055.2  -99.5 ps  S =  80.1 ps  Cin =   \n",
+              "2.4 ff  Cout =  13.5 ff  Cmax = 309.5 ff  G =  556                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m14\u001b[0m -- \u001b[1;36m499\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a21oi_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m3263.0\u001b[0m \u001b[1;36m-225.6\u001b[0m ps S = \u001b[1;36m190.2\u001b[0m ps Cin = \n", + "\u001b[1;36m4.6\u001b[0m ff Cout = \u001b[1;36m13.2\u001b[0m ff Cmax = \u001b[1;36m128.2\u001b[0m ff G = \u001b[1;36m277\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 14 --     499 : 3    2 sky130_fd_sc_hd__a21oi_2  A =   8.76  Df =3263.0 -225.6 ps  S = 190.2 ps  Cin =   \n",
+              "4.6 ff  Cout =  13.2 ff  Cmax = 128.2 ff  G =  277                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m15\u001b[0m -- \u001b[1;36m558\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__o21bai_2 A = \u001b[1;36m11.26\u001b[0m Df =\u001b[1;36m3372.3\u001b[0m \u001b[1;36m-153.0\u001b[0m ps S = \u001b[1;36m193.4\u001b[0m ps Cin = \n", + "\u001b[1;36m3.4\u001b[0m ff Cout = \u001b[1;36m13.1\u001b[0m ff Cmax = \u001b[1;36m140.1\u001b[0m ff G = \u001b[1;36m372\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 15 --     558 : 3    2 sky130_fd_sc_hd__o21bai_2 A =  11.26  Df =3372.3 -153.0 ps  S = 193.4 ps  Cin =   \n",
+              "3.4 ff  Cout =  13.1 ff  Cmax = 140.1 ff  G =  372                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m16\u001b[0m -- \u001b[1;36m560\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m3\u001b[0m sky130_fd_sc_hd__xor2_2 A = \u001b[1;36m16.27\u001b[0m Df =\u001b[1;36m3544.2\u001b[0m \u001b[1;36m-90.6\u001b[0m ps S = \u001b[1;36m187.5\u001b[0m ps Cin = \n", + "\u001b[1;36m8.6\u001b[0m ff Cout = \u001b[1;36m11.5\u001b[0m ff Cmax = \u001b[1;36m130.0\u001b[0m ff G = \u001b[1;36m129\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 16 --     560 : 2    3 sky130_fd_sc_hd__xor2_2   A =  16.27  Df =3544.2  -90.6 ps  S = 187.5 ps  Cin =   \n",
+              "8.6 ff  Cout =  11.5 ff  Cmax = 130.0 ff  G =  129                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m17\u001b[0m -- \u001b[1;36m562\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m1\u001b[0m sky130_fd_sc_hd__or2_2 A = \u001b[1;36m6.26\u001b[0m Df =\u001b[1;36m3815.8\u001b[0m \u001b[1;36m-224.8\u001b[0m ps S = \u001b[1;36m52.4\u001b[0m ps Cin = \n", + "\u001b[1;36m1.5\u001b[0m ff Cout = \u001b[1;36m2.4\u001b[0m ff Cmax = \u001b[1;36m299.4\u001b[0m ff G = \u001b[1;36m159\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 17 --     562 : 2    1 sky130_fd_sc_hd__or2_2    A =   6.26  Df =3815.8 -224.8 ps  S =  52.4 ps  Cin =   \n",
+              "1.5 ff  Cout =   2.4 ff  Cmax = 299.4 ff  G =  159                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m18\u001b[0m -- \u001b[1;36m609\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a21o_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m4056.1\u001b[0m \u001b[1;36m-217.0\u001b[0m ps S = \u001b[1;36m82.3\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m14.0\u001b[0m ff Cmax = \u001b[1;36m309.5\u001b[0m ff G = \u001b[1;36m570\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 18 --     609 : 3    2 sky130_fd_sc_hd__a21o_2   A =   8.76  Df =4056.1 -217.0 ps  S =  82.3 ps  Cin =   \n",
+              "2.4 ff  Cout =  14.0 ff  Cmax = 309.5 ff  G =  570                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m19\u001b[0m -- \u001b[1;36m707\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a21boi_2 A = \u001b[1;36m11.26\u001b[0m Df =\u001b[1;36m4261.4\u001b[0m \u001b[1;36m-342.3\u001b[0m ps S = \u001b[1;36m197.5\u001b[0m ps Cin = \n", + "\u001b[1;36m3.6\u001b[0m ff Cout = \u001b[1;36m14.0\u001b[0m ff Cmax = \u001b[1;36m129.1\u001b[0m ff G = \u001b[1;36m372\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 19 --     707 : 3    2 sky130_fd_sc_hd__a21boi_2 A =  11.26  Df =4261.4 -342.3 ps  S = 197.5 ps  Cin =   \n",
+              "3.6 ff  Cout =  14.0 ff  Cmax = 129.1 ff  G =  372                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m20\u001b[0m -- \u001b[1;36m722\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__nor2_2 A = \u001b[1;36m6.26\u001b[0m Df =\u001b[1;36m4345.0\u001b[0m \u001b[1;36m-267.9\u001b[0m ps S = \u001b[1;36m140.8\u001b[0m ps Cin = \n", + "\u001b[1;36m4.4\u001b[0m ff Cout = \u001b[1;36m10.5\u001b[0m ff Cmax = \u001b[1;36m141.9\u001b[0m ff G = \u001b[1;36m229\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 20 --     722 : 2    2 sky130_fd_sc_hd__nor2_2   A =   6.26  Df =4345.0 -267.9 ps  S = 140.8 ps  Cin =   \n",
+              "4.4 ff  Cout =  10.5 ff  Cmax = 141.9 ff  G =  229                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m21\u001b[0m -- \u001b[1;36m770\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__xnor2_2 A = \u001b[1;36m16.27\u001b[0m Df =\u001b[1;36m4579.6\u001b[0m \u001b[1;36m-302.1\u001b[0m ps S = \u001b[1;36m229.4\u001b[0m ps Cin = \n", + "\u001b[1;36m8.5\u001b[0m ff Cout = \u001b[1;36m14.0\u001b[0m ff Cmax = \u001b[1;36m121.8\u001b[0m ff G = \u001b[1;36m157\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 21 --     770 : 2    2 sky130_fd_sc_hd__xnor2_2  A =  16.27  Df =4579.6 -302.1 ps  S = 229.4 ps  Cin =   \n",
+              "8.5 ff  Cout =  14.0 ff  Cmax = 121.8 ff  G =  157                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m22\u001b[0m -- \u001b[1;36m804\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m3\u001b[0m sky130_fd_sc_hd__xor2_2 A = \u001b[1;36m16.27\u001b[0m Df =\u001b[1;36m4870.3\u001b[0m \u001b[1;36m-387.8\u001b[0m ps S = \u001b[1;36m211.4\u001b[0m ps Cin = \n", + "\u001b[1;36m8.6\u001b[0m ff Cout = \u001b[1;36m13.4\u001b[0m ff Cmax = \u001b[1;36m130.0\u001b[0m ff G = \u001b[1;36m149\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 22 --     804 : 2    3 sky130_fd_sc_hd__xor2_2   A =  16.27  Df =4870.3 -387.8 ps  S = 211.4 ps  Cin =   \n",
+              "8.6 ff  Cout =  13.4 ff  Cmax = 130.0 ff  G =  149                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m23\u001b[0m -- \u001b[1;36m1036\u001b[0m : \u001b[1;36m5\u001b[0m \u001b[1;36m6\u001b[0m sky130_fd_sc_hd__a221o_2 A = \u001b[1;36m11.26\u001b[0m Df =\u001b[1;36m5429.2\u001b[0m \u001b[1;36m-309.5\u001b[0m ps S = \u001b[1;36m113.8\u001b[0m ps Cin = \n", + "\u001b[1;36m2.3\u001b[0m ff Cout = \u001b[1;36m19.0\u001b[0m ff Cmax = \u001b[1;36m299.4\u001b[0m ff G = \u001b[1;36m784\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 23 --    1036 : 5    6 sky130_fd_sc_hd__a221o_2  A =  11.26  Df =5429.2 -309.5 ps  S = 113.8 ps  Cin =   \n",
+              "2.3 ff  Cout =  19.0 ff  Cmax = 299.4 ff  G =  784                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m24\u001b[0m -- \u001b[1;36m1336\u001b[0m : \u001b[1;36m4\u001b[0m \u001b[1;36m7\u001b[0m sky130_fd_sc_hd__nand4_2 A = \u001b[1;36m12.51\u001b[0m Df =\u001b[1;36m5625.1\u001b[0m \u001b[1;36m-288.9\u001b[0m ps S = \u001b[1;36m221.6\u001b[0m ps Cin = \n", + "\u001b[1;36m4.4\u001b[0m ff Cout = \u001b[1;36m28.1\u001b[0m ff Cmax = \u001b[1;36m200.5\u001b[0m ff G = \u001b[1;36m617\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 24 --    1336 : 4    7 sky130_fd_sc_hd__nand4_2  A =  12.51  Df =5625.1 -288.9 ps  S = 221.6 ps  Cin =   \n",
+              "4.4 ff  Cout =  28.1 ff  Cmax = 200.5 ff  G =  617                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m25\u001b[0m -- \u001b[1;36m1555\u001b[0m : \u001b[1;36m4\u001b[0m \u001b[1;36m5\u001b[0m sky130_fd_sc_hd__or4_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m6128.2\u001b[0m \u001b[1;36m-291.4\u001b[0m ps S = \u001b[1;36m153.4\u001b[0m ps Cin = \n", + "\u001b[1;36m1.5\u001b[0m ff Cout = \u001b[1;36m17.7\u001b[0m ff Cmax = \u001b[1;36m310.4\u001b[0m ff G = \u001b[1;36m1139\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 25 --    1555 : 4    5 sky130_fd_sc_hd__or4_2    A =   8.76  Df =6128.2 -291.4 ps  S = 153.4 ps  Cin =   \n",
+              "1.5 ff  Cout =  17.7 ff  Cmax = 310.4 ff  G = 1139                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m26\u001b[0m -- \u001b[1;36m1557\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__and3_2 A = \u001b[1;36m7.51\u001b[0m Df =\u001b[1;36m6378.0\u001b[0m \u001b[1;36m-344.7\u001b[0m ps S = \u001b[1;36m64.0\u001b[0m ps Cin = \n", + "\u001b[1;36m1.5\u001b[0m ff Cout = \u001b[1;36m6.8\u001b[0m ff Cmax = \u001b[1;36m309.5\u001b[0m ff G = \u001b[1;36m434\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 26 --    1557 : 3    2 sky130_fd_sc_hd__and3_2   A =   7.51  Df =6378.0 -344.7 ps  S =  64.0 ps  Cin =   \n",
+              "1.5 ff  Cout =   6.8 ff  Cmax = 309.5 ff  G =  434                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m27\u001b[0m -- \u001b[1;36m1560\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m4\u001b[0m sky130_fd_sc_hd__or3_2 A = \u001b[1;36m7.51\u001b[0m Df =\u001b[1;36m6877.5\u001b[0m \u001b[1;36m-407.5\u001b[0m ps S = \u001b[1;36m113.5\u001b[0m ps Cin = \n", + "\u001b[1;36m1.5\u001b[0m ff Cout = \u001b[1;36m13.9\u001b[0m ff Cmax = \u001b[1;36m310.4\u001b[0m ff G = \u001b[1;36m885\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 27 --    1560 : 3    4 sky130_fd_sc_hd__or3_2    A =   7.51  Df =6877.5 -407.5 ps  S = 113.5 ps  Cin =   \n",
+              "1.5 ff  Cout =  13.9 ff  Cmax = 310.4 ff  G =  885                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m28\u001b[0m -- \u001b[1;36m1626\u001b[0m : \u001b[1;36m4\u001b[0m \u001b[1;36m4\u001b[0m sky130_fd_sc_hd__a211o_2 A = \u001b[1;36m10.01\u001b[0m Df =\u001b[1;36m7265.7\u001b[0m \u001b[1;36m-525.1\u001b[0m ps S = \u001b[1;36m75.5\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m13.1\u001b[0m ff Cmax = \u001b[1;36m325.0\u001b[0m ff G = \u001b[1;36m540\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 28 --    1626 : 4    4 sky130_fd_sc_hd__a211o_2  A =  10.01  Df =7265.7 -525.1 ps  S =  75.5 ps  Cin =   \n",
+              "2.4 ff  Cout =  13.1 ff  Cmax = 325.0 ff  G =  540                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m29\u001b[0m -- \u001b[1;36m1630\u001b[0m : \u001b[1;36m5\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a2111o_2 A = \u001b[1;36m12.51\u001b[0m Df =\u001b[1;36m7694.6\u001b[0m \u001b[1;36m-553.8\u001b[0m ps S = \u001b[1;36m68.9\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m4.9\u001b[0m ff Cmax = \u001b[1;36m324.1\u001b[0m ff G = \u001b[1;36m196\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 29 --    1630 : 5    2 sky130_fd_sc_hd__a2111o_2 A =  12.51  Df =7694.6 -553.8 ps  S =  68.9 ps  Cin =   \n",
+              "2.4 ff  Cout =   4.9 ff  Cmax = 324.1 ff  G =  196                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m30\u001b[0m -- \u001b[1;36m1632\u001b[0m : \u001b[1;36m4\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a211o_2 A = \u001b[1;36m10.01\u001b[0m Df =\u001b[1;36m8029.8\u001b[0m \u001b[1;36m-459.9\u001b[0m ps S = \u001b[1;36m51.4\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m4.3\u001b[0m ff Cmax = \u001b[1;36m325.0\u001b[0m ff G = \u001b[1;36m173\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 30 --    1632 : 4    2 sky130_fd_sc_hd__a211o_2  A =  10.01  Df =8029.8 -459.9 ps  S =  51.4 ps  Cin =   \n",
+              "2.4 ff  Cout =   4.3 ff  Cmax = 325.0 ff  G =  173                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m31\u001b[0m -- \u001b[1;36m1633\u001b[0m : \u001b[1;36m2\u001b[0m \u001b[1;36m3\u001b[0m sky130_fd_sc_hd__and2b_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m8250.5\u001b[0m \u001b[1;36m-193.9\u001b[0m ps S = \u001b[1;36m83.3\u001b[0m ps Cin = \n", + "\u001b[1;36m1.6\u001b[0m ff Cout = \u001b[1;36m13.4\u001b[0m ff Cmax = \u001b[1;36m310.4\u001b[0m ff G = \u001b[1;36m811\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 31 --    1633 : 2    3 sky130_fd_sc_hd__and2b_2  A =   8.76  Df =8250.5 -193.9 ps  S =  83.3 ps  Cin =   \n",
+              "1.6 ff  Cout =  13.4 ff  Cmax = 310.4 ff  G =  811                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m32\u001b[0m -- \u001b[1;36m1637\u001b[0m : \u001b[1;36m4\u001b[0m \u001b[1;36m1\u001b[0m sky130_fd_sc_hd__and4b_2 A = \u001b[1;36m11.26\u001b[0m Df =\u001b[1;36m8495.2\u001b[0m \u001b[1;36m-202.8\u001b[0m ps S = \u001b[1;36m64.2\u001b[0m ps Cin = \n", + "\u001b[1;36m1.6\u001b[0m ff Cout = \u001b[1;36m5.1\u001b[0m ff Cmax = \u001b[1;36m297.6\u001b[0m ff G = \u001b[1;36m310\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 32 --    1637 : 4    1 sky130_fd_sc_hd__and4b_2  A =  11.26  Df =8495.2 -202.8 ps  S =  64.2 ps  Cin =   \n",
+              "1.6 ff  Cout =   5.1 ff  Cmax = 297.6 ff  G =  310                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m33\u001b[0m -- \u001b[1;36m1640\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m3\u001b[0m sky130_fd_sc_hd__a21oi_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m8727.5\u001b[0m \u001b[1;36m-349.7\u001b[0m ps S = \u001b[1;36m230.3\u001b[0m ps Cin = \n", + "\u001b[1;36m4.6\u001b[0m ff Cout = \u001b[1;36m16.9\u001b[0m ff Cmax = \u001b[1;36m128.2\u001b[0m ff G = \u001b[1;36m354\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 33 --    1640 : 3    3 sky130_fd_sc_hd__a21oi_2  A =   8.76  Df =8727.5 -349.7 ps  S = 230.3 ps  Cin =   \n",
+              "4.6 ff  Cout =  16.9 ff  Cmax = 128.2 ff  G =  354                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m34\u001b[0m -- \u001b[1;36m1747\u001b[0m : \u001b[1;36m4\u001b[0m \u001b[1;36m4\u001b[0m sky130_fd_sc_hd__o31a_2 A = \u001b[1;36m10.01\u001b[0m Df =\u001b[1;36m8931.7\u001b[0m \u001b[1;36m-184.3\u001b[0m ps S = \u001b[1;36m68.3\u001b[0m ps Cin = \n", + "\u001b[1;36m2.3\u001b[0m ff Cout = \u001b[1;36m9.0\u001b[0m ff Cmax = \u001b[1;36m285.7\u001b[0m ff G = \u001b[1;36m369\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 34 --    1747 : 4    4 sky130_fd_sc_hd__o31a_2   A =  10.01  Df =8931.7 -184.3 ps  S =  68.3 ps  Cin =   \n",
+              "2.3 ff  Cout =   9.0 ff  Cmax = 285.7 ff  G =  369                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m35\u001b[0m -- \u001b[1;36m1896\u001b[0m : \u001b[1;36m5\u001b[0m \u001b[1;36m2\u001b[0m sky130_fd_sc_hd__a2111o_2 A = \u001b[1;36m12.51\u001b[0m Df =\u001b[1;36m9191.0\u001b[0m \u001b[1;36m-109.3\u001b[0m ps S = \u001b[1;36m81.1\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m9.0\u001b[0m ff Cmax = \u001b[1;36m324.1\u001b[0m ff G = \u001b[1;36m361\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 35 --    1896 : 5    2 sky130_fd_sc_hd__a2111o_2 A =  12.51  Df =9191.0 -109.3 ps  S =  81.1 ps  Cin =   \n",
+              "2.4 ff  Cout =   9.0 ff  Cmax = 324.1 ff  G =  361                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m36\u001b[0m -- \u001b[1;36m1918\u001b[0m : \u001b[1;36m4\u001b[0m \u001b[1;36m3\u001b[0m sky130_fd_sc_hd__a31oi_2 A = \u001b[1;36m12.51\u001b[0m Df =\u001b[1;36m9400.9\u001b[0m \u001b[1;36m-222.3\u001b[0m ps S = \u001b[1;36m179.6\u001b[0m ps Cin = \n", + "\u001b[1;36m4.4\u001b[0m ff Cout = \u001b[1;36m8.0\u001b[0m ff Cmax = \u001b[1;36m118.1\u001b[0m ff G = \u001b[1;36m172\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 36 --    1918 : 4    3 sky130_fd_sc_hd__a31oi_2  A =  12.51  Df =9400.9 -222.3 ps  S = 179.6 ps  Cin =   \n",
+              "4.4 ff  Cout =   8.0 ff  Cmax = 118.1 ff  G =  172                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m37\u001b[0m -- \u001b[1;36m1928\u001b[0m : \u001b[1;36m3\u001b[0m \u001b[1;36m1\u001b[0m sky130_fd_sc_hd__or3_2 A = \u001b[1;36m7.51\u001b[0m Df =\u001b[1;36m9624.8\u001b[0m \u001b[1;36m-81.9\u001b[0m ps S = \u001b[1;36m73.5\u001b[0m ps Cin = \n", + "\u001b[1;36m1.5\u001b[0m ff Cout = \u001b[1;36m2.4\u001b[0m ff Cmax = \u001b[1;36m310.4\u001b[0m ff G = \u001b[1;36m154\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 37 --    1928 : 3    1 sky130_fd_sc_hd__or3_2    A =   7.51  Df =9624.8  -81.9 ps  S =  73.5 ps  Cin =   \n",
+              "1.5 ff  Cout =   2.4 ff  Cmax = 310.4 ff  G =  154                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Path \u001b[1;36m38\u001b[0m -- \u001b[1;36m1930\u001b[0m : \u001b[1;36m4\u001b[0m \u001b[1;36m1\u001b[0m sky130_fd_sc_hd__a31o_2 A = \u001b[1;36m8.76\u001b[0m Df =\u001b[1;36m9944.6\u001b[0m \u001b[1;36m-142.9\u001b[0m ps S = \u001b[1;36m198.9\u001b[0m ps Cin = \n", + "\u001b[1;36m2.4\u001b[0m ff Cout = \u001b[1;36m33.4\u001b[0m ff Cmax = \u001b[1;36m271.9\u001b[0m ff G = \u001b[1;36m1420\u001b[0m \n" + ], + "text/html": [ + "
ABC: Path 38 --    1930 : 4    1 sky130_fd_sc_hd__a31o_2   A =   8.76  Df =9944.6 -142.9 ps  S = 198.9 ps  Cin =   \n",
+              "2.4 ff  Cout =  33.4 ff  Cmax = 271.9 ff  G = 1420                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: Start-point = pi1 \u001b[1m(\u001b[0m\\A \u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m. End-point = po31 \u001b[1m(\u001b[0m$auto$rtlil.\u001b[1;92mcc:2684\u001b[0m:MuxGate$\u001b[1;36m8060\u001b[0m\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
ABC: Start-point = pi1 (\\A [0]).  End-point = po31 ($auto$rtlil.cc:2684:MuxGate$8060).                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + print_stats -m \n" + ], + "text/html": [ + "
ABC: + print_stats -m                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: netlist : i/o = \u001b[1;36m105\u001b[0m/ \u001b[1;36m32\u001b[0m lat = \u001b[1;36m0\u001b[0m nd = \u001b[1;36m1793\u001b[0m edge = \u001b[1;36m4584\u001b[0m area =\u001b[1;36m16495.34\u001b[0m delay\n", + "=\u001b[1;36m38.00\u001b[0m lev = \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
ABC: netlist                       : i/o =  105/   32  lat =    0  nd =  1793  edge =   4584  area =16495.34  delay\n",
+              "=38.00  lev = 38                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC: + write_blif \u001b[35m/tmp/yosys-abc-7hChV6/\u001b[0m\u001b[95moutput.blif\u001b[0m \n" + ], + "text/html": [ + "
ABC: + write_blif /tmp/yosys-abc-7hChV6/output.blif                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m54.1\u001b[0m.\u001b[1;36m2\u001b[0m. Re-integrating ABC results. \n" + ], + "text/html": [ + "
54.1.2. Re-integrating ABC results.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nor4b_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nor4b_2 cells:        1                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__or4bb_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__or4bb_2 cells:        1                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__and3b_2 cells: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__and3b_2 cells:        2                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o311a_2 cells: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o311a_2 cells:        2                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a2bb2o_2 cells: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a2bb2o_2 cells:        4                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a221o_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a221o_2 cells:        1                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a41o_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a41o_2 cells:        1                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__or4b_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__or4b_2 cells:        1                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nand3b_2 cells: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nand3b_2 cells:        3                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nor3b_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nor3b_2 cells:        1                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o2111a_2 cells: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o2111a_2 cells:        4                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a311oi_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a311oi_2 cells:        1                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__or4_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__or4_2 cells:        1                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o31ai_2 cells: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o31ai_2 cells:        3                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a211oi_2 cells: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a211oi_2 cells:        3                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o211ai_2 cells: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o211ai_2 cells:        2                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o311ai_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o311ai_2 cells:        1                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a211o_2 cells: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a211o_2 cells:        4                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__and4b_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__and4b_2 cells:        1                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o21bai_2 cells: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o21bai_2 cells:        8                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a32o_2 cells: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a32o_2 cells:       15                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__or3b_2 cells: \u001b[1;36m20\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__or3b_2 cells:       20                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o221a_2 cells: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o221a_2 cells:        5                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o2111ai_2 cells: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o2111ai_2 cells:        4                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a311o_2 cells: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a311o_2 cells:        4                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o21a_2 cells: \u001b[1;36m51\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o21a_2 cells:       51                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nor3_2 cells: \u001b[1;36m17\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nor3_2 cells:       17                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o32a_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o32a_2 cells:        1                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__and4_2 cells: \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__and4_2 cells:       30                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a22oi_2 cells: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a22oi_2 cells:       11                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__mux2_1 cells: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__mux2_1 cells:        2                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o211a_2 cells: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o211a_2 cells:        8                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a21boi_2 cells: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a21boi_2 cells:        6                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nand2b_2 cells: \u001b[1;36m40\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nand2b_2 cells:       40                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a21bo_2 cells: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a21bo_2 cells:       15                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__xor2_2 cells: \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__xor2_2 cells:      107                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a21oi_2 cells: \u001b[1;36m73\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a21oi_2 cells:       73                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__and3_2 cells: \u001b[1;36m100\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__and3_2 cells:      100                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nand2_2 cells: \u001b[1;36m266\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nand2_2 cells:      266                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nand3_2 cells: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nand3_2 cells:       25                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a2111o_2 cells: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a2111o_2 cells:        2                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o21ba_2 cells: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o21ba_2 cells:       11                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__inv_2 cells: \u001b[1;36m29\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__inv_2 cells:       29                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nor2_2 cells: \u001b[1;36m156\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nor2_2 cells:      156                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__or2_2 cells: \u001b[1;36m158\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__or2_2 cells:      158                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__nand4_2 cells: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__nand4_2 cells:       38                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a31oi_2 cells: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a31oi_2 cells:        1                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__and2b_2 cells: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__and2b_2 cells:       38                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a22o_2 cells: \u001b[1;36m71\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a22o_2 cells:       71                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__and2_2 cells: \u001b[1;36m112\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__and2_2 cells:      112                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a21o_2 cells: \u001b[1;36m57\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a21o_2 cells:       57                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o31a_2 cells: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o31a_2 cells:        4                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__xnor2_2 cells: \u001b[1;36m162\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__xnor2_2 cells:      162                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__or3_2 cells: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__or3_2 cells:       25                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__o21ai_2 cells: \u001b[1;36m48\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__o21ai_2 cells:       48                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: sky130_fd_sc_hd__a31o_2 cells: \u001b[1;36m36\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:   sky130_fd_sc_hd__a31o_2 cells:       36                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: internal signals: \u001b[1;36m2442\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:        internal signals:     2442                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: input signals: \u001b[1;36m105\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:           input signals:      105                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ABC RESULTS: output signals: \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
ABC RESULTS:          output signals:       32                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removing temp directory. \n" + ], + "text/html": [ + "
Removing temp directory.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m55\u001b[0m. Executing SETUNDEF pass \u001b[1m(\u001b[0mreplace undef values with defined constants\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
55. Executing SETUNDEF pass (replace undef values with defined constants).                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m56\u001b[0m. Executing HILOMAP pass \u001b[1m(\u001b[0mmapping to constant drivers\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
56. Executing HILOMAP pass (mapping to constant drivers).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m57\u001b[0m. Executing SPLITNETS pass \u001b[1m(\u001b[0msplitting up multi-bit signals\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
57. Executing SPLITNETS pass (splitting up multi-bit signals).                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m58\u001b[0m. Executing OPT_CLEAN pass \u001b[1m(\u001b[0mremove unused cells and wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
58. Executing OPT_CLEAN pass (remove unused cells and wires).                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Finding unused cells or wires in module \\tapeout_vedic_mac_16.. \n" + ], + "text/html": [ + "
Finding unused cells or wires in module \\tapeout_vedic_mac_16..                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Removed \u001b[1;36m0\u001b[0m unused cells and \u001b[1;36m2579\u001b[0m unused wires. \n" + ], + "text/html": [ + "
Removed 0 unused cells and 2579 unused wires.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95msuppressed\u001b[0m\u001b[39m ~\u001b[0m\u001b[1;36m33\u001b[0m\u001b[39m debug messages\u001b[0m\u001b[1m>\u001b[0m \n" + ], + "text/html": [ + "
<suppressed ~33 debug messages>                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m59\u001b[0m. Executing INSBUF pass \u001b[1m(\u001b[0minsert buffer cells for connected wires\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
59. Executing INSBUF pass (insert buffer cells for connected wires).                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m60\u001b[0m. Executing CHECK pass \u001b[1m(\u001b[0mchecking for obvious problems\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
60. Executing CHECK pass (checking for obvious problems).                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Checking module tapeout_vedic_mac_16\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Checking module tapeout_vedic_mac_16...                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Found and reported \u001b[1;36m0\u001b[0m problems. \n" + ], + "text/html": [ + "
Found and reported 0 problems.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
{                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"creator\"\u001b[0m: \u001b[32m\"Yosys 0.38 \u001b[0m\u001b[32m(\u001b[0m\u001b[32mgit sha1 543faed9c8c, clang++ 17.0.6 -fPIC -Os\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\"\u001b[0m, \n" + ], + "text/html": [ + "
\"creator\": \"Yosys 0.38 (git sha1 543faed9c8c, clang++ 17.0.6 -fPIC -Os)\",                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"invocation\"\u001b[0m: \u001b[32m\"stat -json -liberty /content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib \"\u001b[0m, \n" + ], + "text/html": [ + "
\"invocation\": \"stat -json -liberty /content/openlane_run/tmp/6b12b63317314492a76eab044b6bea4d.lib \",               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"modules\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"modules\": {                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"\\\\tapeout_vedic_mac_16\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"\\\\tapeout_vedic_mac_16\": {                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wires\"\u001b[0m: \u001b[1;36m1801\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wires\":         1801,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wire_bits\"\u001b[0m: \u001b[1;36m1900\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wire_bits\":     1900,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wires\"\u001b[0m: \u001b[1;36m8\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wires\":     8,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wire_bits\"\u001b[0m: \u001b[1;36m107\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wire_bits\": 107,                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memories\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memories\":      0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memory_bits\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memory_bits\":   0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_processes\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_processes\":     0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells\"\u001b[0m: \u001b[1;36m1825\u001b[0m, \n" + ], + "text/html": [ + "
\"num_cells\":         1825,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"area\"\u001b[0m: \u001b[1;36m17331.622400\u001b[0m, \n" + ], + "text/html": [ + "
\"area\":              17331.622400,                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells_by_type\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"num_cells_by_type\": {                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a2111o_2\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a2111o_2\": 2,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a211o_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a211o_2\": 4,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a211oi_2\"\u001b[0m: \u001b[1;36m3\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a211oi_2\": 3,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a21bo_2\"\u001b[0m: \u001b[1;36m15\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a21bo_2\": 15,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a21boi_2\"\u001b[0m: \u001b[1;36m6\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a21boi_2\": 6,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a21o_2\"\u001b[0m: \u001b[1;36m57\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a21o_2\": 57,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a21oi_2\"\u001b[0m: \u001b[1;36m73\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a21oi_2\": 73,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a221o_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a221o_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a22o_2\"\u001b[0m: \u001b[1;36m71\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a22o_2\": 71,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a22oi_2\"\u001b[0m: \u001b[1;36m11\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a22oi_2\": 11,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a2bb2o_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a2bb2o_2\": 4,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a311o_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a311o_2\": 4,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a311oi_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a311oi_2\": 1,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a31o_2\"\u001b[0m: \u001b[1;36m36\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a31o_2\": 36,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a31oi_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a31oi_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a32o_2\"\u001b[0m: \u001b[1;36m15\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a32o_2\": 15,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a41o_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a41o_2\": 1,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and2_2\"\u001b[0m: \u001b[1;36m112\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and2_2\": 112,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and2b_2\"\u001b[0m: \u001b[1;36m38\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and2b_2\": 38,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and3_2\"\u001b[0m: \u001b[1;36m100\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and3_2\": 100,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and3b_2\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and3b_2\": 2,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and4_2\"\u001b[0m: \u001b[1;36m30\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and4_2\": 30,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and4b_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and4b_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__dfrtp_2\"\u001b[0m: \u001b[1;36m32\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__dfrtp_2\": 32,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__inv_2\"\u001b[0m: \u001b[1;36m29\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__inv_2\": 29,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__mux2_1\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__mux2_1\": 2,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand2_2\"\u001b[0m: \u001b[1;36m266\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand2_2\": 266,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand2b_2\"\u001b[0m: \u001b[1;36m40\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand2b_2\": 40,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand3_2\"\u001b[0m: \u001b[1;36m25\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand3_2\": 25,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand3b_2\"\u001b[0m: \u001b[1;36m3\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand3b_2\": 3,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand4_2\"\u001b[0m: \u001b[1;36m38\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand4_2\": 38,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nor2_2\"\u001b[0m: \u001b[1;36m156\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nor2_2\": 156,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nor3_2\"\u001b[0m: \u001b[1;36m17\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nor3_2\": 17,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nor3b_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nor3b_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nor4b_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nor4b_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o2111a_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o2111a_2\": 4,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o2111ai_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o2111ai_2\": 4,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o211a_2\"\u001b[0m: \u001b[1;36m8\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o211a_2\": 8,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o211ai_2\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o211ai_2\": 2,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o21a_2\"\u001b[0m: \u001b[1;36m51\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o21a_2\": 51,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o21ai_2\"\u001b[0m: \u001b[1;36m48\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o21ai_2\": 48,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o21ba_2\"\u001b[0m: \u001b[1;36m11\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o21ba_2\": 11,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o21bai_2\"\u001b[0m: \u001b[1;36m8\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o21bai_2\": 8,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o221a_2\"\u001b[0m: \u001b[1;36m5\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o221a_2\": 5,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o311a_2\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o311a_2\": 2,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o311ai_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o311ai_2\": 1,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o31a_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o31a_2\": 4,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o31ai_2\"\u001b[0m: \u001b[1;36m3\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o31ai_2\": 3,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o32a_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o32a_2\": 1,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or2_2\"\u001b[0m: \u001b[1;36m158\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or2_2\": 158,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or3_2\"\u001b[0m: \u001b[1;36m25\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or3_2\": 25,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or3b_2\"\u001b[0m: \u001b[1;36m20\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or3b_2\": 20,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or4_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or4_2\": 1,                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or4b_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or4b_2\": 1,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or4bb_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or4bb_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__xnor2_2\"\u001b[0m: \u001b[1;36m162\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__xnor2_2\": 162,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__xor2_2\"\u001b[0m: \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__xor2_2\": 107                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m, \n" + ], + "text/html": [ + "
},                                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"design\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"design\": {                                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wires\"\u001b[0m: \u001b[1;36m1801\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wires\":         1801,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_wire_bits\"\u001b[0m: \u001b[1;36m1900\u001b[0m, \n" + ], + "text/html": [ + "
\"num_wire_bits\":     1900,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wires\"\u001b[0m: \u001b[1;36m8\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wires\":     8,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_pub_wire_bits\"\u001b[0m: \u001b[1;36m107\u001b[0m, \n" + ], + "text/html": [ + "
\"num_pub_wire_bits\": 107,                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memories\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memories\":      0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_memory_bits\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_memory_bits\":   0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_processes\"\u001b[0m: \u001b[1;36m0\u001b[0m, \n" + ], + "text/html": [ + "
\"num_processes\":     0,                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells\"\u001b[0m: \u001b[1;36m1825\u001b[0m, \n" + ], + "text/html": [ + "
\"num_cells\":         1825,                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"area\"\u001b[0m: \u001b[1;36m17331.622400\u001b[0m, \n" + ], + "text/html": [ + "
\"area\":              17331.622400,                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"num_cells_by_type\"\u001b[0m: \u001b[1m{\u001b[0m \n" + ], + "text/html": [ + "
\"num_cells_by_type\": {                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a2111o_2\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a2111o_2\": 2,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a211o_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a211o_2\": 4,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a211oi_2\"\u001b[0m: \u001b[1;36m3\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a211oi_2\": 3,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a21bo_2\"\u001b[0m: \u001b[1;36m15\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a21bo_2\": 15,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a21boi_2\"\u001b[0m: \u001b[1;36m6\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a21boi_2\": 6,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a21o_2\"\u001b[0m: \u001b[1;36m57\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a21o_2\": 57,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a21oi_2\"\u001b[0m: \u001b[1;36m73\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a21oi_2\": 73,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a221o_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a221o_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a22o_2\"\u001b[0m: \u001b[1;36m71\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a22o_2\": 71,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a22oi_2\"\u001b[0m: \u001b[1;36m11\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a22oi_2\": 11,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a2bb2o_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a2bb2o_2\": 4,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a311o_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a311o_2\": 4,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a311oi_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a311oi_2\": 1,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a31o_2\"\u001b[0m: \u001b[1;36m36\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a31o_2\": 36,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a31oi_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a31oi_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a32o_2\"\u001b[0m: \u001b[1;36m15\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a32o_2\": 15,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__a41o_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__a41o_2\": 1,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and2_2\"\u001b[0m: \u001b[1;36m112\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and2_2\": 112,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and2b_2\"\u001b[0m: \u001b[1;36m38\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and2b_2\": 38,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and3_2\"\u001b[0m: \u001b[1;36m100\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and3_2\": 100,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and3b_2\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and3b_2\": 2,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and4_2\"\u001b[0m: \u001b[1;36m30\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and4_2\": 30,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__and4b_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__and4b_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__dfrtp_2\"\u001b[0m: \u001b[1;36m32\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__dfrtp_2\": 32,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__inv_2\"\u001b[0m: \u001b[1;36m29\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__inv_2\": 29,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__mux2_1\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__mux2_1\": 2,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand2_2\"\u001b[0m: \u001b[1;36m266\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand2_2\": 266,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand2b_2\"\u001b[0m: \u001b[1;36m40\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand2b_2\": 40,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand3_2\"\u001b[0m: \u001b[1;36m25\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand3_2\": 25,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand3b_2\"\u001b[0m: \u001b[1;36m3\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand3b_2\": 3,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nand4_2\"\u001b[0m: \u001b[1;36m38\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nand4_2\": 38,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nor2_2\"\u001b[0m: \u001b[1;36m156\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nor2_2\": 156,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nor3_2\"\u001b[0m: \u001b[1;36m17\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nor3_2\": 17,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nor3b_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nor3b_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__nor4b_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__nor4b_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o2111a_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o2111a_2\": 4,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o2111ai_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o2111ai_2\": 4,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o211a_2\"\u001b[0m: \u001b[1;36m8\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o211a_2\": 8,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o211ai_2\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o211ai_2\": 2,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o21a_2\"\u001b[0m: \u001b[1;36m51\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o21a_2\": 51,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o21ai_2\"\u001b[0m: \u001b[1;36m48\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o21ai_2\": 48,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o21ba_2\"\u001b[0m: \u001b[1;36m11\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o21ba_2\": 11,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o21bai_2\"\u001b[0m: \u001b[1;36m8\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o21bai_2\": 8,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o221a_2\"\u001b[0m: \u001b[1;36m5\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o221a_2\": 5,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o311a_2\"\u001b[0m: \u001b[1;36m2\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o311a_2\": 2,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o311ai_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o311ai_2\": 1,                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o31a_2\"\u001b[0m: \u001b[1;36m4\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o31a_2\": 4,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o31ai_2\"\u001b[0m: \u001b[1;36m3\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o31ai_2\": 3,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__o32a_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__o32a_2\": 1,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or2_2\"\u001b[0m: \u001b[1;36m158\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or2_2\": 158,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or3_2\"\u001b[0m: \u001b[1;36m25\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or3_2\": 25,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or3b_2\"\u001b[0m: \u001b[1;36m20\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or3b_2\": 20,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or4_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or4_2\": 1,                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or4b_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or4b_2\": 1,                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__or4bb_2\"\u001b[0m: \u001b[1;36m1\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__or4bb_2\": 1,                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__xnor2_2\"\u001b[0m: \u001b[1;36m162\u001b[0m, \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__xnor2_2\": 162,                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[32m\"sky130_fd_sc_hd__xor2_2\"\u001b[0m: \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
\"sky130_fd_sc_hd__xor2_2\": 107                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m}\u001b[0m \n" + ], + "text/html": [ + "
}                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m61\u001b[0m. Printing statistics. \n" + ], + "text/html": [ + "
61. Printing statistics.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "=== tapeout_vedic_mac_16 === \n" + ], + "text/html": [ + "
=== tapeout_vedic_mac_16 ===                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of wires: \u001b[1;36m1801\u001b[0m \n" + ], + "text/html": [ + "
Number of wires:               1801                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of wire bits: \u001b[1;36m1900\u001b[0m \n" + ], + "text/html": [ + "
Number of wire bits:           1900                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of public wires: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Number of public wires:           8                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of public wire bits: \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
Number of public wire bits:     107                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of memories: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of memories:               0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of memory bits: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of memory bits:            0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of processes: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of processes:              0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of cells: \u001b[1;36m1825\u001b[0m \n" + ], + "text/html": [ + "
Number of cells:               1825                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a2111o_2 \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a2111o_2       2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a211o_2 \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a211o_2        4                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a211oi_2 \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a211oi_2       3                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a21bo_2 \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a21bo_2       15                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a21boi_2 \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a21boi_2       6                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a21o_2 \u001b[1;36m57\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a21o_2        57                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a21oi_2 \u001b[1;36m73\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a21oi_2       73                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a221o_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a221o_2        1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a22o_2 \u001b[1;36m71\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a22o_2        71                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a22oi_2 \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a22oi_2       11                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a2bb2o_2 \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a2bb2o_2       4                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a311o_2 \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a311o_2        4                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a311oi_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a311oi_2       1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a31o_2 \u001b[1;36m36\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a31o_2        36                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a31oi_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a31oi_2        1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a32o_2 \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a32o_2        15                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__a41o_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__a41o_2         1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__and2_2 \u001b[1;36m112\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__and2_2       112                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__and2b_2 \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__and2b_2       38                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__and3_2 \u001b[1;36m100\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__and3_2       100                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__and3b_2 \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__and3b_2        2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__and4_2 \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__and4_2        30                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__and4b_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__and4b_2        1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__dfrtp_2 \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__dfrtp_2       32                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__inv_2 \u001b[1;36m29\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__inv_2         29                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__mux2_1 \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__mux2_1         2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nand2_2 \u001b[1;36m266\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nand2_2      266                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nand2b_2 \u001b[1;36m40\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nand2b_2      40                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nand3_2 \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nand3_2       25                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nand3b_2 \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nand3b_2       3                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nand4_2 \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nand4_2       38                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nor2_2 \u001b[1;36m156\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nor2_2       156                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nor3_2 \u001b[1;36m17\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nor3_2        17                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nor3b_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nor3b_2        1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__nor4b_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__nor4b_2        1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o2111a_2 \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o2111a_2       4                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o2111ai_2 \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o2111ai_2      4                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o211a_2 \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o211a_2        8                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o211ai_2 \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o211ai_2       2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o21a_2 \u001b[1;36m51\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o21a_2        51                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o21ai_2 \u001b[1;36m48\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o21ai_2       48                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o21ba_2 \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o21ba_2       11                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o21bai_2 \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o21bai_2       8                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o221a_2 \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o221a_2        5                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o311a_2 \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o311a_2        2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o311ai_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o311ai_2       1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o31a_2 \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o31a_2         4                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o31ai_2 \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o31ai_2        3                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__o32a_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__o32a_2         1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__or2_2 \u001b[1;36m158\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__or2_2        158                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__or3_2 \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__or3_2         25                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__or3b_2 \u001b[1;36m20\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__or3b_2        20                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__or4_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__or4_2          1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__or4b_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__or4b_2         1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__or4bb_2 \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__or4bb_2        1                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__xnor2_2 \u001b[1;36m162\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__xnor2_2      162                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__xor2_2 \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__xor2_2       107                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Chip area for module \u001b[32m'\\tapeout_vedic_mac_16'\u001b[0m: \u001b[1;36m17331.622400\u001b[0m \n" + ], + "text/html": [ + "
Chip area for module '\\tapeout_vedic_mac_16': 17331.622400                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m62\u001b[0m. Executing Verilog backend. \n" + ], + "text/html": [ + "
62. Executing Verilog backend.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Dumping module `\\tapeout_vedic_mac_16'. \n" + ], + "text/html": [ + "
Dumping module `\\tapeout_vedic_mac_16'.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m63\u001b[0m. Executing JSON backend. \n" + ], + "text/html": [ + "
63. Executing JSON backend.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "End of script. Logfile hash: 48ad08314b, CPU: user \u001b[1;36m6.\u001b[0m08s system \u001b[1;36m0.\u001b[0m17s, MEM: \u001b[1;36m253.19\u001b[0m MB peak \n" + ], + "text/html": [ + "
End of script. Logfile hash: 48ad08314b, CPU: user 6.08s system 0.17s, MEM: 253.19 MB peak                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Yosys \u001b[1;36m0.38\u001b[0m \u001b[1m(\u001b[0mgit sha1 543faed9c8c, clang++ \u001b[1;36m17.0\u001b[0m.\u001b[1;36m6\u001b[0m -fPIC -Os\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
Yosys 0.38 (git sha1 543faed9c8c, clang++ 17.0.6 -fPIC -Os)                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Time spent: \u001b[1;36m45\u001b[0m% 2x abc \u001b[1m(\u001b[0m\u001b[1;36m4\u001b[0m sec\u001b[1m)\u001b[0m, \u001b[1;36m11\u001b[0m% 7x stat \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m sec\u001b[1m)\u001b[0m, \u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Time spent: 45% 2x abc (4 sec), 11% 7x stat (1 sec), ...                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:03]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Parsing synthesis checks… \u001b]8;id=106102;file:///content/openlane_ipynb/openlane/steps/yosys.py\u001b\\\u001b[2myosys.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=117309;file:///content/openlane_ipynb/openlane/steps/yosys.py#58\u001b\\\u001b[2m58\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:03] VERBOSE  Parsing synthesis checks…                                                           yosys.py:58\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 25.30s\n#### Views updated:\n* Verilog Netlist\n" + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 25.30s\n#### Views updated:\n* Verilog Netlist\n" + }, + "metadata": {}, + "execution_count": 38 + } + ], + "source": [ + "# Synthesis\n", + "print(\"Running Synthesis...\")\n", + "run_step(\"Yosys.Synthesis\", {'VERILOG_FILES': [\"./tapeout_vedic_mac_16.v\"]})" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "CscT1PYPeY0r", + "outputId": "1d09def0-1b59-4896-8a42-715166a93c04" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running Floorplan...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mFloorplan Initialization\u001b[92m ─────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Floorplan Initialization ─────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:03]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.Floorplan'\u001b[0m… \u001b]8;id=255250;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=961313;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:03] VERBOSE  Running 'OpenROAD.Floorplan'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:03]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=964790;file:///content/openlane_run/19-openroad-floorplan/openroad-floorplan.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=106400;file:///content/openlane_run/19-openroad-floorplan/openroad-floorplan.log\u001b\\\u001b[1;36m19\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=964790;file:///content/openlane_run/19-openroad-floorplan/openroad-floorplan.log\u001b\\\u001b[95m-openroad-floorplan/openroad-floorplan.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=944931;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=367537;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:03] VERBOSE  Logging subprocess to openlane_run/19-openroad-floorplan/openroad-floorplan.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading technology LEF file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/techlef/sky130_fd_sc_hd__nom.tlef'\u001b[0m… \n" + ], + "text/html": [ + "
Reading technology LEF file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/techlef/sky130_fd_sc_hd__nom.tlef'… \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO ODB-\u001b[1;36m0227\u001b[0m\u001b[1m]\u001b[0m LEF file: \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/techlef/\u001b[0m\u001b[95msky130_fd_sc_hd__nom.tlef\u001b[0m, created\n", + "\u001b[1;36m13\u001b[0m layers, \u001b[1;36m25\u001b[0m vias \n" + ], + "text/html": [ + "
[INFO ODB-0227] LEF file: /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/techlef/sky130_fd_sc_hd__nom.tlef, created\n",
+              "13 layers, 25 vias                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading cell LEF file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_ef_sc_hd.lef'\u001b[0m… \n" + ], + "text/html": [ + "
Reading cell LEF file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_ef_sc_hd.lef'…                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "The NOWIREEXTENSIONATPIN statement will be ignored. See file \n", + "\u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/\u001b[0m\u001b[95msky130_ef_sc_hd.lef\u001b[0m at line \u001b[1;36m2\u001b[0m. \n" + ], + "text/html": [ + "
The NOWIREEXTENSIONATPIN statement will be ignored. See file                                                       \n",
+              "/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_ef_sc_hd.lef at line 2.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO ODB-\u001b[1;36m0227\u001b[0m\u001b[1m]\u001b[0m LEF file: \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/\u001b[0m\u001b[95msky130_ef_sc_hd.lef\u001b[0m, created \u001b[1;36m4\u001b[0m library\n", + "cells \n" + ], + "text/html": [ + "
[INFO ODB-0227] LEF file: /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_ef_sc_hd.lef, created 4 library\n",
+              "cells                                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading cell LEF file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_fd_sc_hd.lef'\u001b[0m… \n" + ], + "text/html": [ + "
Reading cell LEF file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_fd_sc_hd.lef'…                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "The NOWIREEXTENSIONATPIN statement will be ignored. See file \n", + "\u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/\u001b[0m\u001b[95msky130_fd_sc_hd.lef\u001b[0m at line \u001b[1;36m2\u001b[0m. \n" + ], + "text/html": [ + "
The NOWIREEXTENSIONATPIN statement will be ignored. See file                                                       \n",
+              "/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_fd_sc_hd.lef at line 2.                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO ODB-\u001b[1;36m0227\u001b[0m\u001b[1m]\u001b[0m LEF file: \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/\u001b[0m\u001b[95msky130_fd_sc_hd.lef\u001b[0m, created \u001b[1;36m437\u001b[0m \n", + "library cells \n" + ], + "text/html": [ + "
[INFO ODB-0227] LEF file: /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_fd_sc_hd.lef, created 437      \n",
+              "library cells                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading top-level netlist at \u001b[32m'/content/openlane_run/18-yosys-synthesis/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Reading top-level netlist at '/content/openlane_run/18-yosys-synthesis/tapeout_vedic_mac_16.nl.v'…                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Linking design \u001b[32m'tapeout_vedic_mac_16'\u001b[0m from netlist… \n" + ], + "text/html": [ + "
Linking design 'tapeout_vedic_mac_16' from netlist…                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using site height: \u001b[1;36m2.72\u001b[0m and site width: \u001b[1;36m0.46\u001b[0m… \n" + ], + "text/html": [ + "
Using site height: 2.72 and site width: 0.46…                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using relative sizing for the floorplan. \n" + ], + "text/html": [ + "
[INFO] Using relative sizing for the floorplan.                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO IFP-\u001b[1;36m0001\u001b[0m\u001b[1m]\u001b[0m Added \u001b[1;36m68\u001b[0m rows of \u001b[1;36m404\u001b[0m site unithd. \n" + ], + "text/html": [ + "
[INFO IFP-0001] Added 68 rows of 404 site unithd.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO IFP-\u001b[1;36m0030\u001b[0m\u001b[1m]\u001b[0m Inserted \u001b[1;36m0\u001b[0m tiecells using sky130_fd_sc_hd__conb_1/LO. \n" + ], + "text/html": [ + "
[INFO IFP-0030] Inserted 0 tiecells using sky130_fd_sc_hd__conb_1/LO.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO IFP-\u001b[1;36m0030\u001b[0m\u001b[1m]\u001b[0m Inserted \u001b[1;36m0\u001b[0m tiecells using sky130_fd_sc_hd__conb_1/HI. \n" + ], + "text/html": [ + "
[INFO IFP-0030] Inserted 0 tiecells using sky130_fd_sc_hd__conb_1/HI.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Extracting DIE_AREA and CORE_AREA from the floorplan \n" + ], + "text/html": [ + "
[INFO] Extracting DIE_AREA and CORE_AREA from the floorplan                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Floorplanned on a die area of \u001b[1;36m0.0\u001b[0m \u001b[1;36m0.0\u001b[0m \u001b[1;36m197.22\u001b[0m \u001b[1;36m207.94\u001b[0m \u001b[1m(\u001b[0mµm\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO] Floorplanned on a die area of 0.0 0.0 197.22 207.94 (µm).                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Floorplanned on a core area of \u001b[1;36m5.52\u001b[0m \u001b[1;36m10.88\u001b[0m \u001b[1;36m191.36\u001b[0m \u001b[1;36m195.84\u001b[0m \u001b[1m(\u001b[0mµm\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO] Floorplanned on a core area of 5.52 10.88 191.36 195.84 (µm).                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing metric design__die__bbox: \u001b[1;36m0.0\u001b[0m \u001b[1;36m0.0\u001b[0m \u001b[1;36m197.22\u001b[0m \u001b[1;36m207.94\u001b[0m \n" + ], + "text/html": [ + "
Writing metric design__die__bbox: 0.0 0.0 197.22 207.94                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing metric design__core__bbox: \u001b[1;36m5.52\u001b[0m \u001b[1;36m10.88\u001b[0m \u001b[1;36m191.36\u001b[0m \u001b[1;36m195.84\u001b[0m \n" + ], + "text/html": [ + "
Writing metric design__core__bbox: 5.52 10.88 191.36 195.84                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.odb'…               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.nl.v'…                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.pnl.v'…               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.def'…                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.sdc'…              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:05]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=981146;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=283706;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:05] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:05]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=398115;file:///tmp/openlane_klayout_tmp_pa68a7g8/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=985095;file:///tmp/openlane_klayout_tmp_pa68a7g8/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_pa68a7g8/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=595767;file:///tmp/openlane_klayout_tmp_pa68a7g8/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=424091;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=9773;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:05] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_pa68a7g8/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.75s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:06]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=820876;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=974487;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:06] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:06]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=491524;file:///tmp/openlane_klayout_tmp_ie290bfo/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=676563;file:///tmp/openlane_klayout_tmp_ie290bfo/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_ie290bfo/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=175921;file:///tmp/openlane_klayout_tmp_ie290bfo/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=356120;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=326167;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:06] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_ie290bfo/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.75s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 39 + } + ], + "source": [ + "# Floorplan\n", + "print(\"Running Floorplan...\")\n", + "run_step(\"OpenROAD.Floorplan\", {'FP_CORE_UTIL': 50, 'FP_ASPECT_RATIO': 1.0})" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "XbMxk8YzeY0s", + "outputId": "1adeae6c-2828-4042-f8ec-b5023b5778cb" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running Tap/Endcap Insertion...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m─────────────────────────────────────────────── \u001b[0mTap/Decap Insertion\u001b[92m ───────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
─────────────────────────────────────────────── Tap/Decap Insertion ───────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:07]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.TapEndcapInsertion'\u001b[0m… \u001b]8;id=745440;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=966047;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:07] VERBOSE  Running 'OpenROAD.TapEndcapInsertion'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:07]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=78248;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=391800;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=593403;file:///content/openlane_run/20-openroad-tapendcapinsertion/openroad-tapendcapinsertion.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=381996;file:///content/openlane_run/20-openroad-tapendcapinsertion/openroad-tapendcapinsertion.log\u001b\\\u001b[1;36m20\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=593403;file:///content/openlane_run/20-openroad-tapendcapinsertion/openroad-tapendcapinsertion.log\u001b\\\u001b[95m-openroad-tapendcapinsertion/openroad-tapendcapinsertion.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:00:07] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/20-openroad-tapendcapinsertion/openroad-tapendcapinsertion.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/19-openroad-floorplan/tapeout_vedic_mac_16.odb'…               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO TAP-\u001b[1;36m0004\u001b[0m\u001b[1m]\u001b[0m Inserted \u001b[1;36m136\u001b[0m endcaps. \n" + ], + "text/html": [ + "
[INFO TAP-0004] Inserted 136 endcaps.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO TAP-\u001b[1;36m0005\u001b[0m\u001b[1m]\u001b[0m Inserted \u001b[1;36m490\u001b[0m tapcells. \n" + ], + "text/html": [ + "
[INFO TAP-0005] Inserted 490 tapcells.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.odb'…      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.nl.v'…               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.pnl.v'…      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.def'…                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.sdc'…     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:09]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=628344;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=121753;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:09] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:09]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=135677;file:///tmp/openlane_klayout_tmp_h_eg4x16/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=844925;file:///tmp/openlane_klayout_tmp_h_eg4x16/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_h_eg4x16/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=972412;file:///tmp/openlane_klayout_tmp_h_eg4x16/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=388132;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=844376;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:09] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_h_eg4x16/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.64s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:10]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=291127;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=268850;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:10] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:10]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=224924;file:///tmp/openlane_klayout_tmp_ps0ucqz8/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=568789;file:///tmp/openlane_klayout_tmp_ps0ucqz8/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_ps0ucqz8/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=152682;file:///tmp/openlane_klayout_tmp_ps0ucqz8/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=770163;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=297606;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:10] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_ps0ucqz8/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.64s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 40 + } + ], + "source": [ + "# Tap/Endcap Insertion\n", + "print(\"Running Tap/Endcap Insertion...\")\n", + "run_step(\"OpenROAD.TapEndcapInsertion\")" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "E5q7bmgzeY0s", + "outputId": "01cc892b-2d87-4db7-8cd3-4d4a9623ef3a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running I/O Placement...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m────────────────────────────────────────────────── \u001b[0mI/O Placement\u001b[92m ──────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
────────────────────────────────────────────────── I/O Placement ──────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:11]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.IOPlacement'\u001b[0m… \u001b]8;id=459189;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=530593;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:11] VERBOSE  Running 'OpenROAD.IOPlacement'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:11]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=710460;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=948326;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=300683;file:///content/openlane_run/21-openroad-ioplacement/openroad-ioplacement.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=492338;file:///content/openlane_run/21-openroad-ioplacement/openroad-ioplacement.log\u001b\\\u001b[1;36m21\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=300683;file:///content/openlane_run/21-openroad-ioplacement/openroad-ioplacement.log\u001b\\\u001b[95m-openroad-ioplacement/openroad-ioplacement.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:00:11] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/21-openroad-ioplacement/openroad-ioplacement.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/20-openroad-tapendcapinsertion/tapeout_vedic_mac_16.odb'…      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m place_pins args: -min_distance \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
[INFO] place_pins args: -min_distance 3                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Found \u001b[1;36m0\u001b[0m macro blocks. \n" + ], + "text/html": [ + "
Found 0 macro blocks.                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0010\u001b[0m\u001b[1m]\u001b[0m Tentative \u001b[1;36m0\u001b[0m to set up sections. \n" + ], + "text/html": [ + "
[INFO PPL-0010] Tentative 0 to set up sections.                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0001\u001b[0m\u001b[1m]\u001b[0m Number of slots \u001b[1;36m246\u001b[0m \n" + ], + "text/html": [ + "
[INFO PPL-0001] Number of slots           246                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0002\u001b[0m\u001b[1m]\u001b[0m Number of I/O \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
[INFO PPL-0002] Number of I/O             107                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0003\u001b[0m\u001b[1m]\u001b[0m Number of I/O w/sink \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
[INFO PPL-0003] Number of I/O w/sink      107                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0004\u001b[0m\u001b[1m]\u001b[0m Number of I/O w/o sink \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO PPL-0004] Number of I/O w/o sink    0                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0005\u001b[0m\u001b[1m]\u001b[0m Slots per section \u001b[1;36m200\u001b[0m \n" + ], + "text/html": [ + "
[INFO PPL-0005] Slots per section         200                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0006\u001b[0m\u001b[1m]\u001b[0m Slots increase factor \u001b[1;36m0.01\u001b[0m \n" + ], + "text/html": [ + "
[INFO PPL-0006] Slots increase factor     0.01                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0008\u001b[0m\u001b[1m]\u001b[0m Successfully assigned pins to sections. \n" + ], + "text/html": [ + "
[INFO PPL-0008] Successfully assigned pins to sections.                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PPL-\u001b[1;36m0012\u001b[0m\u001b[1m]\u001b[0m I/O nets HPWL: \u001b[1;36m15513.50\u001b[0m um. \n" + ], + "text/html": [ + "
[INFO PPL-0012] I/O nets HPWL: 15513.50 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.odb'…             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.nl.v'…                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.pnl.v'…             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.def'…                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.sdc'…            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:12]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=169626;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=250723;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:12] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:12]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=636532;file:///tmp/openlane_klayout_tmp_i_ksiw64/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=357351;file:///tmp/openlane_klayout_tmp_i_ksiw64/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_i_ksiw64/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=750902;file:///tmp/openlane_klayout_tmp_i_ksiw64/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=671651;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=682453;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:12] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_i_ksiw64/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.47s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:14]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=26510;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=228791;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:14] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:14]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=151891;file:///tmp/openlane_klayout_tmp_uep_lb3z/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=638118;file:///tmp/openlane_klayout_tmp_uep_lb3z/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_uep_lb3z/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=620340;file:///tmp/openlane_klayout_tmp_uep_lb3z/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=383886;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=495669;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:14] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_uep_lb3z/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.47s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 41 + } + ], + "source": [ + "# I/O Placement (default)\n", + "print(\"Running I/O Placement...\")\n", + "run_step(\"OpenROAD.IOPlacement\")" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "1Z0BWBNKeY0s", + "outputId": "ea9f575e-b8ec-4065-ac4d-81401939757b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running PDN Generation...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m────────────────────────────────────── \u001b[0mPower Distribution Network Generation\u001b[92m ──────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
────────────────────────────────────── Power Distribution Network Generation ──────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:15]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.GeneratePDN'\u001b[0m… \u001b]8;id=419543;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=775384;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:15] VERBOSE  Running 'OpenROAD.GeneratePDN'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:15]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[32m'FP_PDN_CFG'\u001b[0m not explicitly set, setting it to \u001b]8;id=622052;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=215724;file:///content/openlane_ipynb/openlane/steps/openroad.py#1174\u001b\\\u001b[2m1174\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[35m/content/openlane_ipynb/openlane/scripts/openroad/common/\u001b[0m\u001b[95mpdn_cfg.tcl\u001b[0m… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:00:15] INFO     'FP_PDN_CFG' not explicitly set, setting it to                                 openroad.py:1174\n",
+              "                    /content/openlane_ipynb/openlane/scripts/openroad/common/pdn_cfg.tcl                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:15]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=618213;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=436695;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=533922;file:///content/openlane_run/22-openroad-generatepdn/openroad-generatepdn.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=740307;file:///content/openlane_run/22-openroad-generatepdn/openroad-generatepdn.log\u001b\\\u001b[1;36m22\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=533922;file:///content/openlane_run/22-openroad-generatepdn/openroad-generatepdn.log\u001b\\\u001b[95m-openroad-generatepdn/openroad-generatepdn.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:00:15] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/22-openroad-generatepdn/openroad-generatepdn.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/21-openroad-ioplacement/tapeout_vedic_mac_16.odb'…             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PDN-\u001b[1;36m0001\u001b[0m\u001b[1m]\u001b[0m Inserting grid: stdcell_grid \n" + ], + "text/html": [ + "
[INFO PDN-0001] Inserting grid: stdcell_grid                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.odb'…             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.nl.v'…                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.pnl.v'…             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.def'…                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.sdc'…            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PSM-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m All shapes on net VPWR are connected. \n" + ], + "text/html": [ + "
[INFO PSM-0040] All shapes on net VPWR are connected.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO PSM-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m All shapes on net VGND are connected. \n" + ], + "text/html": [ + "
[INFO PSM-0040] All shapes on net VGND are connected.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:16]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=530075;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=654831;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:16] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:16]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=212072;file:///tmp/openlane_klayout_tmp_bvrfwefv/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=708869;file:///tmp/openlane_klayout_tmp_bvrfwefv/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_bvrfwefv/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=80726;file:///tmp/openlane_klayout_tmp_bvrfwefv/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=938478;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=321614;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:16] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_bvrfwefv/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.55s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:18]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=336845;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=69627;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:18] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:18]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=479654;file:///tmp/openlane_klayout_tmp_i7c28ci4/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=69653;file:///tmp/openlane_klayout_tmp_i7c28ci4/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_i7c28ci4/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=296982;file:///tmp/openlane_klayout_tmp_i7c28ci4/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=198747;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=757501;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:18] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_i7c28ci4/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.55s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 42 + } + ], + "source": [ + "# PDN Generation\n", + "print(\"Running PDN Generation...\")\n", + "run_step(\"OpenROAD.GeneratePDN\")" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "egR124PDeY0s", + "outputId": "bb77351f-bb1e-469c-a609-9d37349a2114" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running Global Placement...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────────── \u001b[0mGlobal Placement\u001b[92m ─────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────────── Global Placement ─────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:19]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.GlobalPlacement'\u001b[0m… \u001b]8;id=316949;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=724149;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:19] VERBOSE  Running 'OpenROAD.GlobalPlacement'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:19]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[32m'PL_TARGET_DENSITY_PCT'\u001b[0m not explicitly set, using dynamically calculated \u001b]8;id=748485;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=851549;file:///content/openlane_ipynb/openlane/steps/openroad.py#1260\u001b\\\u001b[2m1260\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m target density: \u001b[1;36m62.205900\u001b[0m… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:00:19] INFO     'PL_TARGET_DENSITY_PCT' not explicitly set, using dynamically calculated       openroad.py:1260\n",
+              "                    target density: 62.205900                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:19]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=409616;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=225118;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=426052;file:///content/openlane_run/23-openroad-globalplacement/openroad-globalplacement.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=968759;file:///content/openlane_run/23-openroad-globalplacement/openroad-globalplacement.log\u001b\\\u001b[1;36m23\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=426052;file:///content/openlane_run/23-openroad-globalplacement/openroad-globalplacement.log\u001b\\\u001b[95m-openroad-globalplacement/openroad-globalplacement.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:00:19] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/23-openroad-globalplacement/openroad-globalplacement.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/22-openroad-generatepdn/tapeout_vedic_mac_16.odb'…             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting RC values… \n" + ], + "text/html": [ + "
[INFO] Setting RC values…                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting signal min routing layer to: met1 and clock min routing layer to met1. \n" + ], + "text/html": [ + "
[INFO] Setting signal min routing layer to: met1 and clock min routing layer to met1.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting signal max routing layer to: met5 and clock max routing layer to met5. \n" + ], + "text/html": [ + "
[INFO] Setting signal max routing layer to: met5 and clock max routing layer to met5.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0002\u001b[0m\u001b[1m]\u001b[0m DBU: \u001b[1;36m1000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0002] DBU: 1000                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0003\u001b[0m\u001b[1m]\u001b[0m SiteSize: \u001b[1m(\u001b[0m \u001b[1;36m0.460\u001b[0m \u001b[1;36m2.720\u001b[0m \u001b[1m)\u001b[0m um \n" + ], + "text/html": [ + "
[INFO GPL-0003] SiteSize: (  0.460  2.720 ) um                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0004\u001b[0m\u001b[1m]\u001b[0m CoreBBox: \u001b[1m(\u001b[0m \u001b[1;36m5.520\u001b[0m \u001b[1;36m10.880\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m191.360\u001b[0m \u001b[1;36m195.840\u001b[0m \u001b[1m)\u001b[0m um \n" + ], + "text/html": [ + "
[INFO GPL-0004] CoreBBox: (  5.520 10.880 ) ( 191.360 195.840 ) um                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0006\u001b[0m\u001b[1m]\u001b[0m NumInstances: \u001b[1;36m2451\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0006] NumInstances:              2451                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0007\u001b[0m\u001b[1m]\u001b[0m NumPlaceInstances: \u001b[1;36m1825\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0007] NumPlaceInstances:         1825                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0008\u001b[0m\u001b[1m]\u001b[0m NumFixedInstances: \u001b[1;36m626\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0008] NumFixedInstances:          626                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0009\u001b[0m\u001b[1m]\u001b[0m NumDummyInstances: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0009] NumDummyInstances:            0                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0010\u001b[0m\u001b[1m]\u001b[0m NumNets: \u001b[1;36m1900\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0010] NumNets:                   1900                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0011\u001b[0m\u001b[1m]\u001b[0m NumPins: \u001b[1;36m6612\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0011] NumPins:                   6612                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0012\u001b[0m\u001b[1m]\u001b[0m DieBBox: \u001b[1m(\u001b[0m \u001b[1;36m0.000\u001b[0m \u001b[1;36m0.000\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m197.220\u001b[0m \u001b[1;36m207.940\u001b[0m \u001b[1m)\u001b[0m um \n" + ], + "text/html": [ + "
[INFO GPL-0012] DieBBox:  (  0.000  0.000 ) ( 197.220 207.940 ) um                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0013\u001b[0m\u001b[1m]\u001b[0m CoreBBox: \u001b[1m(\u001b[0m \u001b[1;36m5.520\u001b[0m \u001b[1;36m10.880\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m191.360\u001b[0m \u001b[1;36m195.840\u001b[0m \u001b[1m)\u001b[0m um \n" + ], + "text/html": [ + "
[INFO GPL-0013] CoreBBox: (  5.520 10.880 ) ( 191.360 195.840 ) um                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0016\u001b[0m\u001b[1m]\u001b[0m CoreArea: \u001b[1;36m34372.966\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0016] CoreArea:             34372.966 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0017\u001b[0m\u001b[1m]\u001b[0m NonPlaceInstsArea: \u001b[1;36m1123.578\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0017] NonPlaceInstsArea:     1123.578 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0018\u001b[0m\u001b[1m]\u001b[0m PlaceInstsArea: \u001b[1;36m17331.622\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0018] PlaceInstsArea:       17331.622 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0019\u001b[0m\u001b[1m]\u001b[0m Util: \u001b[1;36m52.126\u001b[0m % \n" + ], + "text/html": [ + "
[INFO GPL-0019] Util:                    52.126 %                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0020\u001b[0m\u001b[1m]\u001b[0m StdInstsArea: \u001b[1;36m17331.622\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0020] StdInstsArea:         17331.622 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0021\u001b[0m\u001b[1m]\u001b[0m MacroInstsArea: \u001b[1;36m0.000\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0021] MacroInstsArea:           0.000 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mInitialPlace\u001b[1m]\u001b[0m Iter: \u001b[1;36m1\u001b[0m CG residual: \u001b[1;36m0.00000033\u001b[0m HPWL: \u001b[1;36m36427320\u001b[0m \n" + ], + "text/html": [ + "
[InitialPlace]  Iter: 1 CG residual: 0.00000033 HPWL: 36427320                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mInitialPlace\u001b[1m]\u001b[0m Iter: \u001b[1;36m2\u001b[0m CG residual: \u001b[1;36m0.00000074\u001b[0m HPWL: \u001b[1;36m29648976\u001b[0m \n" + ], + "text/html": [ + "
[InitialPlace]  Iter: 2 CG residual: 0.00000074 HPWL: 29648976                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mInitialPlace\u001b[1m]\u001b[0m Iter: \u001b[1;36m3\u001b[0m CG residual: \u001b[1;36m0.00000032\u001b[0m HPWL: \u001b[1;36m29315165\u001b[0m \n" + ], + "text/html": [ + "
[InitialPlace]  Iter: 3 CG residual: 0.00000032 HPWL: 29315165                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mInitialPlace\u001b[1m]\u001b[0m Iter: \u001b[1;36m4\u001b[0m CG residual: \u001b[1;36m0.00000737\u001b[0m HPWL: \u001b[1;36m28894356\u001b[0m \n" + ], + "text/html": [ + "
[InitialPlace]  Iter: 4 CG residual: 0.00000737 HPWL: 28894356                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mInitialPlace\u001b[1m]\u001b[0m Iter: \u001b[1;36m5\u001b[0m CG residual: \u001b[1;36m0.00000081\u001b[0m HPWL: \u001b[1;36m28470479\u001b[0m \n" + ], + "text/html": [ + "
[InitialPlace]  Iter: 5 CG residual: 0.00000081 HPWL: 28470479                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0031\u001b[0m\u001b[1m]\u001b[0m FillerInit:NumGCells: \u001b[1;36m2191\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0031] FillerInit:NumGCells:      2191                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0032\u001b[0m\u001b[1m]\u001b[0m FillerInit:NumGNets: \u001b[1;36m1900\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0032] FillerInit:NumGNets:       1900                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m FillerInit:NumGPins: \u001b[1;36m6612\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0033] FillerInit:NumGPins:       6612                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0023\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.622\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0023] TargetDensity:            0.622                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m AvrgPlaceInstArea: \u001b[1;36m9.497\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0024] AvrgPlaceInstArea:        9.497 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0025\u001b[0m\u001b[1m]\u001b[0m IdealBinArea: \u001b[1;36m15.267\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0025] IdealBinArea:            15.267 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0026\u001b[0m\u001b[1m]\u001b[0m IdealBinCnt: \u001b[1;36m2251\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0026] IdealBinCnt:               2251                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0027\u001b[0m\u001b[1m]\u001b[0m TotalBinArea: \u001b[1;36m34372.966\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0027] TotalBinArea:         34372.966 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m BinCnt: \u001b[1;36m32\u001b[0m \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0028] BinCnt:        32     32                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0029\u001b[0m\u001b[1m]\u001b[0m BinSize: \u001b[1m(\u001b[0m \u001b[1;36m5.808\u001b[0m \u001b[1;36m5.780\u001b[0m \u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0029] BinSize: (  5.808  5.780 )                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0030\u001b[0m\u001b[1m]\u001b[0m NumBins: \u001b[1;36m1024\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0030] NumBins: 1024                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1\u001b[0m overflow: \u001b[1;36m0.951\u001b[0m HPWL: \u001b[1;36m18555146\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:    1 overflow: 0.951 HPWL: 18555146                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m10\u001b[0m overflow: \u001b[1;36m0.817\u001b[0m HPWL: \u001b[1;36m22829968\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   10 overflow: 0.817 HPWL: 22829968                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0100\u001b[0m\u001b[1m]\u001b[0m worst slack \u001b[1;36m-1.68e-09\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0100] worst slack -1.68e-09                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0103\u001b[0m\u001b[1m]\u001b[0m Weighted \u001b[1;36m189\u001b[0m nets. \n" + ], + "text/html": [ + "
[INFO GPL-0103] Weighted 189 nets.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m20\u001b[0m overflow: \u001b[1;36m0.769\u001b[0m HPWL: \u001b[1;36m24048004\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   20 overflow: 0.769 HPWL: 24048004                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m30\u001b[0m overflow: \u001b[1;36m0.763\u001b[0m HPWL: \u001b[1;36m24536074\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   30 overflow: 0.763 HPWL: 24536074                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m40\u001b[0m overflow: \u001b[1;36m0.769\u001b[0m HPWL: \u001b[1;36m24327373\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   40 overflow: 0.769 HPWL: 24327373                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m50\u001b[0m overflow: \u001b[1;36m0.775\u001b[0m HPWL: \u001b[1;36m23928649\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   50 overflow: 0.775 HPWL: 23928649                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m60\u001b[0m overflow: \u001b[1;36m0.780\u001b[0m HPWL: \u001b[1;36m23768107\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   60 overflow: 0.780 HPWL: 23768107                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m70\u001b[0m overflow: \u001b[1;36m0.780\u001b[0m HPWL: \u001b[1;36m23775844\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   70 overflow: 0.780 HPWL: 23775844                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m80\u001b[0m overflow: \u001b[1;36m0.782\u001b[0m HPWL: \u001b[1;36m23816163\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   80 overflow: 0.782 HPWL: 23816163                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m90\u001b[0m overflow: \u001b[1;36m0.785\u001b[0m HPWL: \u001b[1;36m23823507\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:   90 overflow: 0.785 HPWL: 23823507                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m100\u001b[0m overflow: \u001b[1;36m0.785\u001b[0m HPWL: \u001b[1;36m23813947\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  100 overflow: 0.785 HPWL: 23813947                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m110\u001b[0m overflow: \u001b[1;36m0.785\u001b[0m HPWL: \u001b[1;36m23817169\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  110 overflow: 0.785 HPWL: 23817169                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m120\u001b[0m overflow: \u001b[1;36m0.784\u001b[0m HPWL: \u001b[1;36m23841116\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  120 overflow: 0.784 HPWL: 23841116                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m130\u001b[0m overflow: \u001b[1;36m0.783\u001b[0m HPWL: \u001b[1;36m23882830\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  130 overflow: 0.783 HPWL: 23882830                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m140\u001b[0m overflow: \u001b[1;36m0.781\u001b[0m HPWL: \u001b[1;36m23947004\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  140 overflow: 0.781 HPWL: 23947004                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m150\u001b[0m overflow: \u001b[1;36m0.778\u001b[0m HPWL: \u001b[1;36m24050910\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  150 overflow: 0.778 HPWL: 24050910                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m160\u001b[0m overflow: \u001b[1;36m0.772\u001b[0m HPWL: \u001b[1;36m24224189\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  160 overflow: 0.772 HPWL: 24224189                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m170\u001b[0m overflow: \u001b[1;36m0.765\u001b[0m HPWL: \u001b[1;36m24502420\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  170 overflow: 0.765 HPWL: 24502420                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m180\u001b[0m overflow: \u001b[1;36m0.758\u001b[0m HPWL: \u001b[1;36m24909961\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  180 overflow: 0.758 HPWL: 24909961                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m190\u001b[0m overflow: \u001b[1;36m0.745\u001b[0m HPWL: \u001b[1;36m25466314\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  190 overflow: 0.745 HPWL: 25466314                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m200\u001b[0m overflow: \u001b[1;36m0.728\u001b[0m HPWL: \u001b[1;36m26141730\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  200 overflow: 0.728 HPWL: 26141730                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m210\u001b[0m overflow: \u001b[1;36m0.707\u001b[0m HPWL: \u001b[1;36m26900762\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  210 overflow: 0.707 HPWL: 26900762                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m220\u001b[0m overflow: \u001b[1;36m0.678\u001b[0m HPWL: \u001b[1;36m27769458\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  220 overflow: 0.678 HPWL: 27769458                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m230\u001b[0m overflow: \u001b[1;36m0.646\u001b[0m HPWL: \u001b[1;36m28701623\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  230 overflow: 0.646 HPWL: 28701623                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0100\u001b[0m\u001b[1m]\u001b[0m worst slack \u001b[1;36m-1.78e-09\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0100] worst slack -1.78e-09                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0103\u001b[0m\u001b[1m]\u001b[0m Weighted \u001b[1;36m183\u001b[0m nets. \n" + ], + "text/html": [ + "
[INFO GPL-0103] Weighted 183 nets.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m240\u001b[0m overflow: \u001b[1;36m0.607\u001b[0m HPWL: \u001b[1;36m29473486\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  240 overflow: 0.607 HPWL: 29473486                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Snapshot saved at iter = \u001b[1;36m241\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Snapshot saved at iter = 241                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m250\u001b[0m overflow: \u001b[1;36m0.563\u001b[0m HPWL: \u001b[1;36m30057491\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  250 overflow: 0.563 HPWL: 30057491                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m260\u001b[0m overflow: \u001b[1;36m0.524\u001b[0m HPWL: \u001b[1;36m30548638\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  260 overflow: 0.524 HPWL: 30548638                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0100\u001b[0m\u001b[1m]\u001b[0m worst slack \u001b[1;36m-1.58e-09\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0100] worst slack -1.58e-09                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0103\u001b[0m\u001b[1m]\u001b[0m Weighted \u001b[1;36m189\u001b[0m nets. \n" + ], + "text/html": [ + "
[INFO GPL-0103] Weighted 189 nets.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m270\u001b[0m overflow: \u001b[1;36m0.476\u001b[0m HPWL: \u001b[1;36m30772699\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  270 overflow: 0.476 HPWL: 30772699                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m280\u001b[0m overflow: \u001b[1;36m0.443\u001b[0m HPWL: \u001b[1;36m31223447\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  280 overflow: 0.443 HPWL: 31223447                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m290\u001b[0m overflow: \u001b[1;36m0.402\u001b[0m HPWL: \u001b[1;36m31412109\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  290 overflow: 0.402 HPWL: 31412109                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m300\u001b[0m overflow: \u001b[1;36m0.367\u001b[0m HPWL: \u001b[1;36m31746646\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  300 overflow: 0.367 HPWL: 31746646                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m310\u001b[0m overflow: \u001b[1;36m0.326\u001b[0m HPWL: \u001b[1;36m31812622\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  310 overflow: 0.326 HPWL: 31812622                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m320\u001b[0m overflow: \u001b[1;36m0.298\u001b[0m HPWL: \u001b[1;36m31808539\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  320 overflow: 0.298 HPWL: 31808539                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0100\u001b[0m\u001b[1m]\u001b[0m worst slack \u001b[1;36m-2.02e-09\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0100] worst slack -2.02e-09                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0103\u001b[0m\u001b[1m]\u001b[0m Weighted \u001b[1;36m189\u001b[0m nets. \n" + ], + "text/html": [ + "
[INFO GPL-0103] Weighted 189 nets.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m330\u001b[0m overflow: \u001b[1;36m0.274\u001b[0m HPWL: \u001b[1;36m31942558\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  330 overflow: 0.274 HPWL: 31942558                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m340\u001b[0m overflow: \u001b[1;36m0.243\u001b[0m HPWL: \u001b[1;36m32167478\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  340 overflow: 0.243 HPWL: 32167478                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m350\u001b[0m overflow: \u001b[1;36m0.215\u001b[0m HPWL: \u001b[1;36m32300332\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  350 overflow: 0.215 HPWL: 32300332                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0100\u001b[0m\u001b[1m]\u001b[0m worst slack \u001b[1;36m-1.83e-09\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0100] worst slack -1.83e-09                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0103\u001b[0m\u001b[1m]\u001b[0m Weighted \u001b[1;36m189\u001b[0m nets. \n" + ], + "text/html": [ + "
[INFO GPL-0103] Weighted 189 nets.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m1\u001b[0m inflationIterCnt: \u001b[1;36m1\u001b[0m bloatIterCnt: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 1 inflationIterCnt: 1 bloatIterCnt: 0                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0.6000000238418579\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0.6000000238418579                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 4                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0667\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0667                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0118\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0118                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9836\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9836                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0392\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0392                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0078\u001b[0m\u001b[1m]\u001b[0m FinalRC lower than minRC \u001b[1m(\u001b[0m\u001b[1;36m1e+30\u001b[0m\u001b[1m)\u001b[0m, min RC updated. \n" + ], + "text/html": [ + "
[INFO GPL-0078] FinalRC lower than minRC (1e+30), min RC updated.                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m94.155\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:       94.155 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.622\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.622                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17331.622\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17331.622 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m20683.082\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      20683.082 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m20777.236\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   20777.236 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.625\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.625                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m20777.236\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          20777.236 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17425.777\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17425.777 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m20777.236\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   20777.236 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m360\u001b[0m overflow: \u001b[1;36m0.586\u001b[0m HPWL: \u001b[1;36m29804329\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  360 overflow: 0.586 HPWL: 29804329                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m370\u001b[0m overflow: \u001b[1;36m0.553\u001b[0m HPWL: \u001b[1;36m30116883\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  370 overflow: 0.553 HPWL: 30116883                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m380\u001b[0m overflow: \u001b[1;36m0.520\u001b[0m HPWL: \u001b[1;36m30391232\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  380 overflow: 0.520 HPWL: 30391232                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m390\u001b[0m overflow: \u001b[1;36m0.480\u001b[0m HPWL: \u001b[1;36m30620753\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  390 overflow: 0.480 HPWL: 30620753                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m400\u001b[0m overflow: \u001b[1;36m0.454\u001b[0m HPWL: \u001b[1;36m30781968\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  400 overflow: 0.454 HPWL: 30781968                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m410\u001b[0m overflow: \u001b[1;36m0.427\u001b[0m HPWL: \u001b[1;36m30934875\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  410 overflow: 0.427 HPWL: 30934875                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m420\u001b[0m overflow: \u001b[1;36m0.401\u001b[0m HPWL: \u001b[1;36m31154979\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  420 overflow: 0.401 HPWL: 31154979                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m430\u001b[0m overflow: \u001b[1;36m0.371\u001b[0m HPWL: \u001b[1;36m31227784\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  430 overflow: 0.371 HPWL: 31227784                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m440\u001b[0m overflow: \u001b[1;36m0.336\u001b[0m HPWL: \u001b[1;36m31474866\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  440 overflow: 0.336 HPWL: 31474866                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m450\u001b[0m overflow: \u001b[1;36m0.310\u001b[0m HPWL: \u001b[1;36m31649068\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  450 overflow: 0.310 HPWL: 31649068                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m460\u001b[0m overflow: \u001b[1;36m0.283\u001b[0m HPWL: \u001b[1;36m31712337\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  460 overflow: 0.283 HPWL: 31712337                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m470\u001b[0m overflow: \u001b[1;36m0.250\u001b[0m HPWL: \u001b[1;36m31945268\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  470 overflow: 0.250 HPWL: 31945268                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m480\u001b[0m overflow: \u001b[1;36m0.223\u001b[0m HPWL: \u001b[1;36m32069699\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  480 overflow: 0.223 HPWL: 32069699                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m2\u001b[0m inflationIterCnt: \u001b[1;36m2\u001b[0m bloatIterCnt: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 2 inflationIterCnt: 2 bloatIterCnt: 0                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0.3333333730697632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0.3333333730697632                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 2                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0370\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0370                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0118\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0118                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m0.9917\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 0.9917                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9487\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9487                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0244\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0244                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0078\u001b[0m\u001b[1m]\u001b[0m FinalRC lower than minRC \u001b[1m(\u001b[0m\u001b[1;36m1.0392157\u001b[0m\u001b[1m)\u001b[0m, min RC updated. \n" + ], + "text/html": [ + "
[INFO GPL-0078] FinalRC lower than minRC (1.0392157), min RC updated.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m113.611\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:      113.611 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.625\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.625                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17425.777\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17425.777 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m20777.236\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      20777.236 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m20890.848\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   20890.848 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.628\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.628                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m20890.847\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          20890.847 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17539.388\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17539.388 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m20890.847\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   20890.847 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m490\u001b[0m overflow: \u001b[1;36m0.586\u001b[0m HPWL: \u001b[1;36m29813461\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  490 overflow: 0.586 HPWL: 29813461                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m500\u001b[0m overflow: \u001b[1;36m0.553\u001b[0m HPWL: \u001b[1;36m30175025\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  500 overflow: 0.553 HPWL: 30175025                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m510\u001b[0m overflow: \u001b[1;36m0.519\u001b[0m HPWL: \u001b[1;36m30449066\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  510 overflow: 0.519 HPWL: 30449066                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m520\u001b[0m overflow: \u001b[1;36m0.480\u001b[0m HPWL: \u001b[1;36m30658283\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  520 overflow: 0.480 HPWL: 30658283                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m530\u001b[0m overflow: \u001b[1;36m0.451\u001b[0m HPWL: \u001b[1;36m30791954\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  530 overflow: 0.451 HPWL: 30791954                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m540\u001b[0m overflow: \u001b[1;36m0.428\u001b[0m HPWL: \u001b[1;36m30986899\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  540 overflow: 0.428 HPWL: 30986899                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m550\u001b[0m overflow: \u001b[1;36m0.402\u001b[0m HPWL: \u001b[1;36m31192179\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  550 overflow: 0.402 HPWL: 31192179                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m560\u001b[0m overflow: \u001b[1;36m0.369\u001b[0m HPWL: \u001b[1;36m31288924\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  560 overflow: 0.369 HPWL: 31288924                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m570\u001b[0m overflow: \u001b[1;36m0.337\u001b[0m HPWL: \u001b[1;36m31526740\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  570 overflow: 0.337 HPWL: 31526740                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m580\u001b[0m overflow: \u001b[1;36m0.310\u001b[0m HPWL: \u001b[1;36m31698296\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  580 overflow: 0.310 HPWL: 31698296                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m590\u001b[0m overflow: \u001b[1;36m0.281\u001b[0m HPWL: \u001b[1;36m31821600\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  590 overflow: 0.281 HPWL: 31821600                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m600\u001b[0m overflow: \u001b[1;36m0.248\u001b[0m HPWL: \u001b[1;36m32006334\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  600 overflow: 0.248 HPWL: 32006334                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m610\u001b[0m overflow: \u001b[1;36m0.222\u001b[0m HPWL: \u001b[1;36m32093570\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  610 overflow: 0.222 HPWL: 32093570                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m3\u001b[0m inflationIterCnt: \u001b[1;36m3\u001b[0m bloatIterCnt: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 3 inflationIterCnt: 3 bloatIterCnt: 0                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0.20000004768371582\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0.20000004768371582                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0.2666667699813843\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0.2666667699813843                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 3                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0296\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0296                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0083\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0083                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m0.9979\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 0.9979                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9479\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9479                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0190\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0190                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0078\u001b[0m\u001b[1m]\u001b[0m FinalRC lower than minRC \u001b[1m(\u001b[0m\u001b[1;36m1.0244008\u001b[0m\u001b[1m)\u001b[0m, min RC updated. \n" + ], + "text/html": [ + "
[INFO GPL-0078] FinalRC lower than minRC (1.0244008), min RC updated.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m85.362\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:       85.362 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.628\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.628                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17539.388\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17539.388 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m20890.847\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      20890.847 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m20976.210\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   20976.210 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.631\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.631                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m20976.210\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          20976.210 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17624.751\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17624.751 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m20976.210\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   20976.210 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m620\u001b[0m overflow: \u001b[1;36m0.590\u001b[0m HPWL: \u001b[1;36m29752039\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  620 overflow: 0.590 HPWL: 29752039                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m630\u001b[0m overflow: \u001b[1;36m0.555\u001b[0m HPWL: \u001b[1;36m30188733\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  630 overflow: 0.555 HPWL: 30188733                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m640\u001b[0m overflow: \u001b[1;36m0.523\u001b[0m HPWL: \u001b[1;36m30438551\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  640 overflow: 0.523 HPWL: 30438551                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m650\u001b[0m overflow: \u001b[1;36m0.485\u001b[0m HPWL: \u001b[1;36m30660778\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  650 overflow: 0.485 HPWL: 30660778                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m660\u001b[0m overflow: \u001b[1;36m0.455\u001b[0m HPWL: \u001b[1;36m30777252\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  660 overflow: 0.455 HPWL: 30777252                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m670\u001b[0m overflow: \u001b[1;36m0.431\u001b[0m HPWL: \u001b[1;36m30969611\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  670 overflow: 0.431 HPWL: 30969611                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m680\u001b[0m overflow: \u001b[1;36m0.402\u001b[0m HPWL: \u001b[1;36m31232950\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  680 overflow: 0.402 HPWL: 31232950                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m690\u001b[0m overflow: \u001b[1;36m0.374\u001b[0m HPWL: \u001b[1;36m31210935\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  690 overflow: 0.374 HPWL: 31210935                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m700\u001b[0m overflow: \u001b[1;36m0.341\u001b[0m HPWL: \u001b[1;36m31532782\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  700 overflow: 0.341 HPWL: 31532782                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m710\u001b[0m overflow: \u001b[1;36m0.314\u001b[0m HPWL: \u001b[1;36m31709601\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  710 overflow: 0.314 HPWL: 31709601                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m720\u001b[0m overflow: \u001b[1;36m0.283\u001b[0m HPWL: \u001b[1;36m31726448\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  720 overflow: 0.283 HPWL: 31726448                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m730\u001b[0m overflow: \u001b[1;36m0.248\u001b[0m HPWL: \u001b[1;36m31940279\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  730 overflow: 0.248 HPWL: 31940279                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m740\u001b[0m overflow: \u001b[1;36m0.222\u001b[0m HPWL: \u001b[1;36m32055021\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  740 overflow: 0.222 HPWL: 32055021                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m4\u001b[0m inflationIterCnt: \u001b[1;36m4\u001b[0m bloatIterCnt: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 4 inflationIterCnt: 4 bloatIterCnt: 0                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0.06666672229766846\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0.06666672229766846                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 1                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0074\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0074                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9584\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9584                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0037\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0037                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0078\u001b[0m\u001b[1m]\u001b[0m FinalRC lower than minRC \u001b[1m(\u001b[0m\u001b[1;36m1.0189815\u001b[0m\u001b[1m)\u001b[0m, min RC updated. \n" + ], + "text/html": [ + "
[INFO GPL-0078] FinalRC lower than minRC (1.0189815), min RC updated.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m12.641\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:       12.641 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.631\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.631                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17624.751\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17624.751 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m20976.210\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      20976.210 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m20988.850\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   20988.850 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.631\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.631                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m20988.850\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          20988.850 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17637.391\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17637.391 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m20988.850\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   20988.850 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m750\u001b[0m overflow: \u001b[1;36m0.595\u001b[0m HPWL: \u001b[1;36m29677559\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  750 overflow: 0.595 HPWL: 29677559                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m760\u001b[0m overflow: \u001b[1;36m0.558\u001b[0m HPWL: \u001b[1;36m30172216\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  760 overflow: 0.558 HPWL: 30172216                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m770\u001b[0m overflow: \u001b[1;36m0.526\u001b[0m HPWL: \u001b[1;36m30423669\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  770 overflow: 0.526 HPWL: 30423669                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m780\u001b[0m overflow: \u001b[1;36m0.491\u001b[0m HPWL: \u001b[1;36m30645389\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  780 overflow: 0.491 HPWL: 30645389                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m790\u001b[0m overflow: \u001b[1;36m0.458\u001b[0m HPWL: \u001b[1;36m30763647\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  790 overflow: 0.458 HPWL: 30763647                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m800\u001b[0m overflow: \u001b[1;36m0.434\u001b[0m HPWL: \u001b[1;36m30968463\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  800 overflow: 0.434 HPWL: 30968463                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m810\u001b[0m overflow: \u001b[1;36m0.406\u001b[0m HPWL: \u001b[1;36m31240526\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  810 overflow: 0.406 HPWL: 31240526                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m820\u001b[0m overflow: \u001b[1;36m0.377\u001b[0m HPWL: \u001b[1;36m31210631\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  820 overflow: 0.377 HPWL: 31210631                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m830\u001b[0m overflow: \u001b[1;36m0.346\u001b[0m HPWL: \u001b[1;36m31502632\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  830 overflow: 0.346 HPWL: 31502632                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m840\u001b[0m overflow: \u001b[1;36m0.317\u001b[0m HPWL: \u001b[1;36m31700585\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  840 overflow: 0.317 HPWL: 31700585                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m850\u001b[0m overflow: \u001b[1;36m0.284\u001b[0m HPWL: \u001b[1;36m31731601\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  850 overflow: 0.284 HPWL: 31731601                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m860\u001b[0m overflow: \u001b[1;36m0.252\u001b[0m HPWL: \u001b[1;36m31939623\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  860 overflow: 0.252 HPWL: 31939623                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m870\u001b[0m overflow: \u001b[1;36m0.225\u001b[0m HPWL: \u001b[1;36m32042298\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  870 overflow: 0.225 HPWL: 32042298                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m880\u001b[0m overflow: \u001b[1;36m0.199\u001b[0m HPWL: \u001b[1;36m32229731\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  880 overflow: 0.199 HPWL: 32229731                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m5\u001b[0m inflationIterCnt: \u001b[1;36m0\u001b[0m bloatIterCnt: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 5 inflationIterCnt: 0 bloatIterCnt: 1                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0.06666672229766846\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0.06666672229766846                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 1                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0074\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0074                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9605\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9605                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0037\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0037                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0079\u001b[0m\u001b[1m]\u001b[0m MinRC \u001b[1m(\u001b[0m\u001b[1;36m1.0037037\u001b[0m\u001b[1m)\u001b[0m violation occurred, total count: \u001b[1;36m1\u001b[0m. \n" + ], + "text/html": [ + "
[INFO GPL-0079] MinRC (1.0037037) violation occurred, total count: 1.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m7.937\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:        7.937 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.631\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.631                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17637.391\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17637.391 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m20988.850\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      20988.850 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m20996.787\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   20996.787 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.631\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.631                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m20996.786\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          20996.786 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17645.328\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17645.328 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.458\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.458 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m20996.786\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   20996.786 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m890\u001b[0m overflow: \u001b[1;36m0.560\u001b[0m HPWL: \u001b[1;36m30160029\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  890 overflow: 0.560 HPWL: 30160029                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m900\u001b[0m overflow: \u001b[1;36m0.530\u001b[0m HPWL: \u001b[1;36m30403214\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  900 overflow: 0.530 HPWL: 30403214                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m910\u001b[0m overflow: \u001b[1;36m0.494\u001b[0m HPWL: \u001b[1;36m30628620\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  910 overflow: 0.494 HPWL: 30628620                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m920\u001b[0m overflow: \u001b[1;36m0.461\u001b[0m HPWL: \u001b[1;36m30738869\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  920 overflow: 0.461 HPWL: 30738869                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m930\u001b[0m overflow: \u001b[1;36m0.436\u001b[0m HPWL: \u001b[1;36m30951088\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  930 overflow: 0.436 HPWL: 30951088                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m940\u001b[0m overflow: \u001b[1;36m0.409\u001b[0m HPWL: \u001b[1;36m31214965\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  940 overflow: 0.409 HPWL: 31214965                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m950\u001b[0m overflow: \u001b[1;36m0.379\u001b[0m HPWL: \u001b[1;36m31192870\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  950 overflow: 0.379 HPWL: 31192870                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m960\u001b[0m overflow: \u001b[1;36m0.348\u001b[0m HPWL: \u001b[1;36m31468721\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  960 overflow: 0.348 HPWL: 31468721                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m970\u001b[0m overflow: \u001b[1;36m0.318\u001b[0m HPWL: \u001b[1;36m31696411\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  970 overflow: 0.318 HPWL: 31696411                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m980\u001b[0m overflow: \u001b[1;36m0.286\u001b[0m HPWL: \u001b[1;36m31732817\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  980 overflow: 0.286 HPWL: 31732817                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m990\u001b[0m overflow: \u001b[1;36m0.255\u001b[0m HPWL: \u001b[1;36m31941697\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter:  990 overflow: 0.255 HPWL: 31941697                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1000\u001b[0m overflow: \u001b[1;36m0.228\u001b[0m HPWL: \u001b[1;36m32040000\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1000 overflow: 0.228 HPWL: 32040000                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1010\u001b[0m overflow: \u001b[1;36m0.201\u001b[0m HPWL: \u001b[1;36m32220350\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1010 overflow: 0.201 HPWL: 32220350                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m6\u001b[0m inflationIterCnt: \u001b[1;36m1\u001b[0m bloatIterCnt: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 6 inflationIterCnt: 1 bloatIterCnt: 1                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0.06666672229766846\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0.06666672229766846                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 1                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0074\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0074                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0039\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0039                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9630\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9630                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0057\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0057                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0079\u001b[0m\u001b[1m]\u001b[0m MinRC \u001b[1m(\u001b[0m\u001b[1;36m1.0037037\u001b[0m\u001b[1m)\u001b[0m violation occurred, total count: \u001b[1;36m2\u001b[0m. \n" + ], + "text/html": [ + "
[INFO GPL-0079] MinRC (1.0037037) violation occurred, total count: 2.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m14.039\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:       14.039 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.631\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.631                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17645.328\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17645.328 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.458\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.458 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m20996.786\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      20996.786 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.632                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17659.367\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17659.367 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1020\u001b[0m overflow: \u001b[1;36m0.561\u001b[0m HPWL: \u001b[1;36m30136019\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1020 overflow: 0.561 HPWL: 30136019                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1030\u001b[0m overflow: \u001b[1;36m0.534\u001b[0m HPWL: \u001b[1;36m30384187\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1030 overflow: 0.534 HPWL: 30384187                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1040\u001b[0m overflow: \u001b[1;36m0.498\u001b[0m HPWL: \u001b[1;36m30608683\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1040 overflow: 0.498 HPWL: 30608683                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1050\u001b[0m overflow: \u001b[1;36m0.465\u001b[0m HPWL: \u001b[1;36m30733880\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1050 overflow: 0.465 HPWL: 30733880                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1060\u001b[0m overflow: \u001b[1;36m0.436\u001b[0m HPWL: \u001b[1;36m30951227\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1060 overflow: 0.436 HPWL: 30951227                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1070\u001b[0m overflow: \u001b[1;36m0.412\u001b[0m HPWL: \u001b[1;36m31197320\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1070 overflow: 0.412 HPWL: 31197320                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1080\u001b[0m overflow: \u001b[1;36m0.383\u001b[0m HPWL: \u001b[1;36m31207125\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1080 overflow: 0.383 HPWL: 31207125                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1090\u001b[0m overflow: \u001b[1;36m0.351\u001b[0m HPWL: \u001b[1;36m31438502\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1090 overflow: 0.351 HPWL: 31438502                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1100\u001b[0m overflow: \u001b[1;36m0.320\u001b[0m HPWL: \u001b[1;36m31693342\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1100 overflow: 0.320 HPWL: 31693342                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1110\u001b[0m overflow: \u001b[1;36m0.289\u001b[0m HPWL: \u001b[1;36m31746192\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1110 overflow: 0.289 HPWL: 31746192                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1120\u001b[0m overflow: \u001b[1;36m0.260\u001b[0m HPWL: \u001b[1;36m31927622\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1120 overflow: 0.260 HPWL: 31927622                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1130\u001b[0m overflow: \u001b[1;36m0.231\u001b[0m HPWL: \u001b[1;36m32028950\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1130 overflow: 0.231 HPWL: 32028950                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1140\u001b[0m overflow: \u001b[1;36m0.204\u001b[0m HPWL: \u001b[1;36m32205971\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1140 overflow: 0.204 HPWL: 32205971                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m7\u001b[0m inflationIterCnt: \u001b[1;36m2\u001b[0m bloatIterCnt: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 7 inflationIterCnt: 2 bloatIterCnt: 1                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9643\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9643                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0000                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0078\u001b[0m\u001b[1m]\u001b[0m FinalRC lower than minRC \u001b[1m(\u001b[0m\u001b[1;36m1.0037037\u001b[0m\u001b[1m)\u001b[0m, min RC updated. \n" + ], + "text/html": [ + "
[INFO GPL-0078] FinalRC lower than minRC (1.0037037), min RC updated.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m0.000\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:        0.000 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.632                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17659.367\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17659.367 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.632                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17659.367\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17659.367 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1150\u001b[0m overflow: \u001b[1;36m0.565\u001b[0m HPWL: \u001b[1;36m30113269\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1150 overflow: 0.565 HPWL: 30113269                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1160\u001b[0m overflow: \u001b[1;36m0.539\u001b[0m HPWL: \u001b[1;36m30348853\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1160 overflow: 0.539 HPWL: 30348853                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1170\u001b[0m overflow: \u001b[1;36m0.501\u001b[0m HPWL: \u001b[1;36m30589096\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1170 overflow: 0.501 HPWL: 30589096                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1180\u001b[0m overflow: \u001b[1;36m0.467\u001b[0m HPWL: \u001b[1;36m30712843\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1180 overflow: 0.467 HPWL: 30712843                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1190\u001b[0m overflow: \u001b[1;36m0.438\u001b[0m HPWL: \u001b[1;36m30935558\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1190 overflow: 0.438 HPWL: 30935558                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1200\u001b[0m overflow: \u001b[1;36m0.415\u001b[0m HPWL: \u001b[1;36m31152818\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1200 overflow: 0.415 HPWL: 31152818                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1210\u001b[0m overflow: \u001b[1;36m0.384\u001b[0m HPWL: \u001b[1;36m31200865\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1210 overflow: 0.384 HPWL: 31200865                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1220\u001b[0m overflow: \u001b[1;36m0.353\u001b[0m HPWL: \u001b[1;36m31402392\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1220 overflow: 0.353 HPWL: 31402392                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1230\u001b[0m overflow: \u001b[1;36m0.322\u001b[0m HPWL: \u001b[1;36m31679432\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1230 overflow: 0.322 HPWL: 31679432                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1240\u001b[0m overflow: \u001b[1;36m0.291\u001b[0m HPWL: \u001b[1;36m31751715\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1240 overflow: 0.291 HPWL: 31751715                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1250\u001b[0m overflow: \u001b[1;36m0.264\u001b[0m HPWL: \u001b[1;36m31907563\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1250 overflow: 0.264 HPWL: 31907563                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1260\u001b[0m overflow: \u001b[1;36m0.234\u001b[0m HPWL: \u001b[1;36m32016675\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1260 overflow: 0.234 HPWL: 32016675                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1270\u001b[0m overflow: \u001b[1;36m0.206\u001b[0m HPWL: \u001b[1;36m32187482\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1270 overflow: 0.206 HPWL: 32187482                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m8\u001b[0m inflationIterCnt: \u001b[1;36m3\u001b[0m bloatIterCnt: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 8 inflationIterCnt: 3 bloatIterCnt: 1                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9643\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9643                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0000                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0079\u001b[0m\u001b[1m]\u001b[0m MinRC \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m violation occurred, total count: \u001b[1;36m1\u001b[0m. \n" + ], + "text/html": [ + "
[INFO GPL-0079] MinRC (1) violation occurred, total count: 1.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m0.000\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:        0.000 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.632                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17659.367\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17659.367 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.632                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17659.367\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17659.367 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1280\u001b[0m overflow: \u001b[1;36m0.569\u001b[0m HPWL: \u001b[1;36m30072989\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1280 overflow: 0.569 HPWL: 30072989                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1290\u001b[0m overflow: \u001b[1;36m0.542\u001b[0m HPWL: \u001b[1;36m30320867\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1290 overflow: 0.542 HPWL: 30320867                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1300\u001b[0m overflow: \u001b[1;36m0.505\u001b[0m HPWL: \u001b[1;36m30562540\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1300 overflow: 0.505 HPWL: 30562540                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1310\u001b[0m overflow: \u001b[1;36m0.469\u001b[0m HPWL: \u001b[1;36m30709643\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1310 overflow: 0.469 HPWL: 30709643                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1320\u001b[0m overflow: \u001b[1;36m0.441\u001b[0m HPWL: \u001b[1;36m30921337\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1320 overflow: 0.441 HPWL: 30921337                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1330\u001b[0m overflow: \u001b[1;36m0.418\u001b[0m HPWL: \u001b[1;36m31129192\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1330 overflow: 0.418 HPWL: 31129192                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1340\u001b[0m overflow: \u001b[1;36m0.388\u001b[0m HPWL: \u001b[1;36m31223714\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1340 overflow: 0.388 HPWL: 31223714                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1350\u001b[0m overflow: \u001b[1;36m0.357\u001b[0m HPWL: \u001b[1;36m31376282\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1350 overflow: 0.357 HPWL: 31376282                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1360\u001b[0m overflow: \u001b[1;36m0.324\u001b[0m HPWL: \u001b[1;36m31661837\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1360 overflow: 0.324 HPWL: 31661837                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1370\u001b[0m overflow: \u001b[1;36m0.294\u001b[0m HPWL: \u001b[1;36m31761560\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1370 overflow: 0.294 HPWL: 31761560                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1380\u001b[0m overflow: \u001b[1;36m0.269\u001b[0m HPWL: \u001b[1;36m31872522\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1380 overflow: 0.269 HPWL: 31872522                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1390\u001b[0m overflow: \u001b[1;36m0.237\u001b[0m HPWL: \u001b[1;36m32001208\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1390 overflow: 0.237 HPWL: 32001208                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1400\u001b[0m overflow: \u001b[1;36m0.209\u001b[0m HPWL: \u001b[1;36m32164614\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1400 overflow: 0.209 HPWL: 32164614                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m9\u001b[0m inflationIterCnt: \u001b[1;36m4\u001b[0m bloatIterCnt: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 9 inflationIterCnt: 4 bloatIterCnt: 1                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9643\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9643                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0000                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0079\u001b[0m\u001b[1m]\u001b[0m MinRC \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m violation occurred, total count: \u001b[1;36m2\u001b[0m. \n" + ], + "text/html": [ + "
[INFO GPL-0079] MinRC (1) violation occurred, total count: 2.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m0.000\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:        0.000 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.632                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m WhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0049] WhiteSpaceArea:       33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m NesterovInstsArea: \u001b[1;36m17659.367\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0050] NesterovInstsArea:    17659.367 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m TotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0051] TotalFillerArea:       3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m TotalGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0052] TotalGCellsArea:      21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m ExpectedGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0053] ExpectedGCellsArea:   21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0054\u001b[0m\u001b[1m]\u001b[0m NewTargetDensity: \u001b[1;36m0.632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0054] NewTargetDensity:         0.632                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0055\u001b[0m\u001b[1m]\u001b[0m NewWhiteSpaceArea: \u001b[1;36m33249.389\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0055] NewWhiteSpaceArea:    33249.389 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0056\u001b[0m\u001b[1m]\u001b[0m MovableArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0056] MovableArea:          21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0057\u001b[0m\u001b[1m]\u001b[0m NewNesterovInstArea: \u001b[1;36m17659.367\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0057] NewNesterovInstArea:  17659.367 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m NewTotalFillerArea: \u001b[1;36m3351.459\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0058] NewTotalFillerArea:    3351.459 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0059\u001b[0m\u001b[1m]\u001b[0m NewTotalGCellsArea: \u001b[1;36m21010.825\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0059] NewTotalGCellsArea:   21010.825 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1410\u001b[0m overflow: \u001b[1;36m0.573\u001b[0m HPWL: \u001b[1;36m30030435\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1410 overflow: 0.573 HPWL: 30030435                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1420\u001b[0m overflow: \u001b[1;36m0.545\u001b[0m HPWL: \u001b[1;36m30295134\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1420 overflow: 0.545 HPWL: 30295134                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1430\u001b[0m overflow: \u001b[1;36m0.509\u001b[0m HPWL: \u001b[1;36m30540755\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1430 overflow: 0.509 HPWL: 30540755                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1440\u001b[0m overflow: \u001b[1;36m0.471\u001b[0m HPWL: \u001b[1;36m30701978\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1440 overflow: 0.471 HPWL: 30701978                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1450\u001b[0m overflow: \u001b[1;36m0.444\u001b[0m HPWL: \u001b[1;36m30895498\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1450 overflow: 0.444 HPWL: 30895498                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1460\u001b[0m overflow: \u001b[1;36m0.420\u001b[0m HPWL: \u001b[1;36m31093075\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1460 overflow: 0.420 HPWL: 31093075                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1470\u001b[0m overflow: \u001b[1;36m0.390\u001b[0m HPWL: \u001b[1;36m31225787\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1470 overflow: 0.390 HPWL: 31225787                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1480\u001b[0m overflow: \u001b[1;36m0.359\u001b[0m HPWL: \u001b[1;36m31341963\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1480 overflow: 0.359 HPWL: 31341963                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1490\u001b[0m overflow: \u001b[1;36m0.327\u001b[0m HPWL: \u001b[1;36m31653856\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1490 overflow: 0.327 HPWL: 31653856                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1500\u001b[0m overflow: \u001b[1;36m0.298\u001b[0m HPWL: \u001b[1;36m31763933\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1500 overflow: 0.298 HPWL: 31763933                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1510\u001b[0m overflow: \u001b[1;36m0.273\u001b[0m HPWL: \u001b[1;36m31846079\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1510 overflow: 0.273 HPWL: 31846079                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1520\u001b[0m overflow: \u001b[1;36m0.240\u001b[0m HPWL: \u001b[1;36m31988189\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1520 overflow: 0.240 HPWL: 31988189                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1530\u001b[0m overflow: \u001b[1;36m0.212\u001b[0m HPWL: \u001b[1;36m32142739\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1530 overflow: 0.212 HPWL: 32142739                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0075\u001b[0m\u001b[1m]\u001b[0m Routability numCall: \u001b[1;36m10\u001b[0m inflationIterCnt: \u001b[1;36m0\u001b[0m bloatIterCnt: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0075] Routability numCall: 10 inflationIterCnt: 0 bloatIterCnt: 2                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m TileBBox: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1;36m6900\u001b[0m \u001b[1m)\u001b[0m DBU \n" + ], + "text/html": [ + "
[INFO GPL-0036] TileBBox: (    0    0 ) ( 6900 6900 ) DBU                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0038\u001b[0m\u001b[1m]\u001b[0m TileCnt: \u001b[1;36m28\u001b[0m \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0038] TileCnt:      28   30                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0039\u001b[0m\u001b[1m]\u001b[0m numRoutingLayers: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0039] numRoutingLayers: 6                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0040\u001b[0m\u001b[1m]\u001b[0m NumTiles: \u001b[1;36m840\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0040] NumTiles: 840                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0063\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowH2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0063] TotalRouteOverflowH2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0064\u001b[0m\u001b[1m]\u001b[0m TotalRouteOverflowV2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0064] TotalRouteOverflowV2: 0                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0065\u001b[0m\u001b[1m]\u001b[0m OverflowTileCnt2: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0065] OverflowTileCnt2: 0                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0066\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.5\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0066] 0.5%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0067\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0067] 1.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0068\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.0\u001b[0m%RC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0068] 2.0%RC: 1.0000                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0069\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.0\u001b[0m%RC: \u001b[1;36m0.9643\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0069] 5.0%RC: 0.9643                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0070\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0.\u001b[0m5rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0070] 0.5rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0071\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m1.\u001b[0m0rcK: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0071] 1.0rcK: 1                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0072\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m2.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0072] 2.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0073\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m5.\u001b[0m0rcK: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0073] 5.0rcK: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0074\u001b[0m\u001b[1m]\u001b[0m FinalRC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0074] FinalRC: 1.0000                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0079\u001b[0m\u001b[1m]\u001b[0m MinRC \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m violation occurred, total count: \u001b[1;36m3\u001b[0m. \n" + ], + "text/html": [ + "
[INFO GPL-0079] MinRC (1) violation occurred, total count: 3.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0045\u001b[0m\u001b[1m]\u001b[0m InflatedAreaDelta: \u001b[1;36m0.000\u001b[0m um^\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0045] InflatedAreaDelta:        0.000 um^2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0046\u001b[0m\u001b[1m]\u001b[0m TargetDensity: \u001b[1;36m0.632\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0046] TargetDensity:            0.632                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Revert Routability Procedure. Target density higher than max, or minRC max violations. \n" + ], + "text/html": [ + "
Revert Routability Procedure. Target density higher than max, or minRC max violations.                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0080\u001b[0m\u001b[1m]\u001b[0m minRcViolatedCnt: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0080] minRcViolatedCnt: 3                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0047\u001b[0m\u001b[1m]\u001b[0m SavedMinRC: \u001b[1;36m1.0000\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0047] SavedMinRC: 1.0000                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0048\u001b[0m\u001b[1m]\u001b[0m SavedTargetDensity: \u001b[1;36m0.6319\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0048] SavedTargetDensity: 0.6319                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Revert back to snapshot coordi \n" + ], + "text/html": [ + "
[NesterovSolve] Revert back to snapshot coordi                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1540\u001b[0m overflow: \u001b[1;36m0.577\u001b[0m HPWL: \u001b[1;36m29971524\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1540 overflow: 0.577 HPWL: 29971524                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1550\u001b[0m overflow: \u001b[1;36m0.547\u001b[0m HPWL: \u001b[1;36m30276066\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1550 overflow: 0.547 HPWL: 30276066                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1560\u001b[0m overflow: \u001b[1;36m0.513\u001b[0m HPWL: \u001b[1;36m30514473\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1560 overflow: 0.513 HPWL: 30514473                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1570\u001b[0m overflow: \u001b[1;36m0.474\u001b[0m HPWL: \u001b[1;36m30709961\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1570 overflow: 0.474 HPWL: 30709961                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1580\u001b[0m overflow: \u001b[1;36m0.446\u001b[0m HPWL: \u001b[1;36m30869456\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1580 overflow: 0.446 HPWL: 30869456                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1590\u001b[0m overflow: \u001b[1;36m0.422\u001b[0m HPWL: \u001b[1;36m31075539\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1590 overflow: 0.422 HPWL: 31075539                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1600\u001b[0m overflow: \u001b[1;36m0.394\u001b[0m HPWL: \u001b[1;36m31250348\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1600 overflow: 0.394 HPWL: 31250348                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1610\u001b[0m overflow: \u001b[1;36m0.363\u001b[0m HPWL: \u001b[1;36m31315498\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1610 overflow: 0.363 HPWL: 31315498                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1620\u001b[0m overflow: \u001b[1;36m0.330\u001b[0m HPWL: \u001b[1;36m31639272\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1620 overflow: 0.330 HPWL: 31639272                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1630\u001b[0m overflow: \u001b[1;36m0.302\u001b[0m HPWL: \u001b[1;36m31767892\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1630 overflow: 0.302 HPWL: 31767892                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1640\u001b[0m overflow: \u001b[1;36m0.276\u001b[0m HPWL: \u001b[1;36m31817173\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1640 overflow: 0.276 HPWL: 31817173                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1650\u001b[0m overflow: \u001b[1;36m0.242\u001b[0m HPWL: \u001b[1;36m31974071\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1650 overflow: 0.242 HPWL: 31974071                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1660\u001b[0m overflow: \u001b[1;36m0.215\u001b[0m HPWL: \u001b[1;36m32120268\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1660 overflow: 0.215 HPWL: 32120268                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1670\u001b[0m overflow: \u001b[1;36m0.187\u001b[0m HPWL: \u001b[1;36m32275822\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1670 overflow: 0.187 HPWL: 32275822                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1680\u001b[0m overflow: \u001b[1;36m0.163\u001b[0m HPWL: \u001b[1;36m32391641\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1680 overflow: 0.163 HPWL: 32391641                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0100\u001b[0m\u001b[1m]\u001b[0m worst slack \u001b[1;36m-1.89e-09\u001b[0m \n" + ], + "text/html": [ + "
[INFO GPL-0100] worst slack -1.89e-09                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GPL-\u001b[1;36m0103\u001b[0m\u001b[1m]\u001b[0m Weighted \u001b[1;36m189\u001b[0m nets. \n" + ], + "text/html": [ + "
[INFO GPL-0103] Weighted 189 nets.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1690\u001b[0m overflow: \u001b[1;36m0.142\u001b[0m HPWL: \u001b[1;36m32520294\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1690 overflow: 0.142 HPWL: 32520294                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1700\u001b[0m overflow: \u001b[1;36m0.122\u001b[0m HPWL: \u001b[1;36m32625829\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1700 overflow: 0.122 HPWL: 32625829                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Iter: \u001b[1;36m1710\u001b[0m overflow: \u001b[1;36m0.103\u001b[0m HPWL: \u001b[1;36m32716237\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Iter: 1710 overflow: 0.103 HPWL: 32716237                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mNesterovSolve\u001b[1m]\u001b[0m Finished with Overflow: \u001b[1;36m0.099691\u001b[0m \n" + ], + "text/html": [ + "
[NesterovSolve] Finished with Overflow: 0.099691                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting RC values… \n" + ], + "text/html": [ + "
[INFO] Setting RC values…                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.odb'…         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.nl.v'…                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.pnl.v'…         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.def'…                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.sdc'…        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:39]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=831033;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=106053;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:39] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:39]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=21860;file:///tmp/openlane_klayout_tmp_kwayl3xv/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=476773;file:///tmp/openlane_klayout_tmp_kwayl3xv/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_kwayl3xv/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=894105;file:///tmp/openlane_klayout_tmp_kwayl3xv/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=846839;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=776200;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:39] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_kwayl3xv/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 19.88s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:41]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=812608;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=269696;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:41] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:41]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=447136;file:///tmp/openlane_klayout_tmp_4fght2br/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=755698;file:///tmp/openlane_klayout_tmp_4fght2br/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_4fght2br/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=653714;file:///tmp/openlane_klayout_tmp_4fght2br/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=216790;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=80355;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:41] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_4fght2br/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 19.88s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 43 + } + ], + "source": [ + "# Global Placement\n", + "print(\"Running Global Placement...\")\n", + "run_step(\"OpenROAD.GlobalPlacement\")" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "oP21cVR8eY0s", + "outputId": "230d290b-6313-4252-ad8b-62850e9a457d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running Detailed Placement...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m─────────────────────────────────────────────── \u001b[0mDetailed Placement\u001b[92m ────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
─────────────────────────────────────────────── Detailed Placement ────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:43]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.DetailedPlacement'\u001b[0m… \u001b]8;id=96080;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=828475;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:43] VERBOSE  Running 'OpenROAD.DetailedPlacement'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:43]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=174951;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=458464;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=44098;file:///content/openlane_run/24-openroad-detailedplacement/openroad-detailedplacement.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=629581;file:///content/openlane_run/24-openroad-detailedplacement/openroad-detailedplacement.log\u001b\\\u001b[1;36m24\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=44098;file:///content/openlane_run/24-openroad-detailedplacement/openroad-detailedplacement.log\u001b\\\u001b[95m-openroad-detailedplacement/openroad-detailedplacement.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:00:43] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/24-openroad-detailedplacement/openroad-detailedplacement.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/23-openroad-globalplacement/tapeout_vedic_mac_16.odb'…         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Placement Analysis \n" + ], + "text/html": [ + "
Placement Analysis                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "--------------------------------- \n" + ], + "text/html": [ + "
---------------------------------                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "total displacement \u001b[1;36m4666.9\u001b[0m u \n" + ], + "text/html": [ + "
total displacement       4666.9 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "average displacement \u001b[1;36m1.9\u001b[0m u \n" + ], + "text/html": [ + "
average displacement        1.9 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "max displacement \u001b[1;36m9.4\u001b[0m u \n" + ], + "text/html": [ + "
max displacement            9.4 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "original HPWL \u001b[1;36m32841.0\u001b[0m u \n" + ], + "text/html": [ + "
original HPWL           32841.0 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "legalized HPWL \u001b[1;36m37993.2\u001b[0m u \n" + ], + "text/html": [ + "
legalized HPWL          37993.2 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "delta HPWL \u001b[1;36m16\u001b[0m % \n" + ], + "text/html": [ + "
delta HPWL                   16 %                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0020\u001b[0m\u001b[1m]\u001b[0m Mirrored \u001b[1;36m903\u001b[0m instances \n" + ], + "text/html": [ + "
[INFO DPL-0020] Mirrored 903 instances                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0021\u001b[0m\u001b[1m]\u001b[0m HPWL before \u001b[1;36m37993.2\u001b[0m u \n" + ], + "text/html": [ + "
[INFO DPL-0021] HPWL before           37993.2 u                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0022\u001b[0m\u001b[1m]\u001b[0m HPWL after \u001b[1;36m36074.4\u001b[0m u \n" + ], + "text/html": [ + "
[INFO DPL-0022] HPWL after            36074.4 u                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0023\u001b[0m\u001b[1m]\u001b[0m HPWL delta \u001b[1;36m-5.1\u001b[0m % \n" + ], + "text/html": [ + "
[INFO DPL-0023] HPWL delta               -5.1 %                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.odb'…       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.nl.v'…                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.pnl.v'…       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.def'…                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.sdc'…      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:44]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=466327;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=249844;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:44] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:44]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=832143;file:///tmp/openlane_klayout_tmp_9edoua23/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=947627;file:///tmp/openlane_klayout_tmp_9edoua23/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_9edoua23/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=417991;file:///tmp/openlane_klayout_tmp_9edoua23/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=968120;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=722404;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:44] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_9edoua23/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.44s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:45]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=167670;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=611326;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:45] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:45]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=348568;file:///tmp/openlane_klayout_tmp_k5vhytod/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=516812;file:///tmp/openlane_klayout_tmp_k5vhytod/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_k5vhytod/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=987441;file:///tmp/openlane_klayout_tmp_k5vhytod/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=172874;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=333919;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:45] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_k5vhytod/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.44s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 44 + } + ], + "source": [ + "# Detailed Placement\n", + "print(\"Running Detailed Placement...\")\n", + "run_step(\"OpenROAD.DetailedPlacement\")" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "GKUNt7XHeY0s", + "outputId": "8aa95b39-3da3-4505-d480-8c9a31d28e12" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running CTS...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m────────────────────────────────────────────── \u001b[0mClock Tree Synthesis\u001b[92m ───────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
────────────────────────────────────────────── Clock Tree Synthesis ───────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:46]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.CTS'\u001b[0m… \u001b]8;id=607577;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=424068;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:46] VERBOSE  Running 'OpenROAD.CTS'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:00:46]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=10020;file:///content/openlane_run/25-openroad-cts/openroad-cts.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=769828;file:///content/openlane_run/25-openroad-cts/openroad-cts.log\u001b\\\u001b[1;36m25\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=10020;file:///content/openlane_run/25-openroad-cts/openroad-cts.log\u001b\\\u001b[95m-openroad-cts/openroad-cts.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=636915;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=796802;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:00:46] VERBOSE  Logging subprocess to openlane_run/25-openroad-cts/openroad-cts.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading timing models for corner nom_tt_025C_1v80… \n" + ], + "text/html": [ + "
Reading timing models for corner nom_tt_025C_1v80…                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading timing library for the \u001b[32m'nom_tt_025C_1v80'\u001b[0m corner at \n", + "\u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading timing library for the 'nom_tt_025C_1v80' corner at                                                        \n",
+              "'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading timing models for corner nom_ff_n40C_1v95… \n" + ], + "text/html": [ + "
Reading timing models for corner nom_ff_n40C_1v95…                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading timing library for the \u001b[32m'nom_ff_n40C_1v95'\u001b[0m corner at \n", + "\u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ff_n40C_1v95.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading timing library for the 'nom_ff_n40C_1v95' corner at                                                        \n",
+              "'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ff_n40C_1v95.lib'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading timing models for corner nom_ss_100C_1v60… \n" + ], + "text/html": [ + "
Reading timing models for corner nom_ss_100C_1v60…                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading timing library for the \u001b[32m'nom_ss_100C_1v60'\u001b[0m corner at \n", + "\u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ss_100C_1v60.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading timing library for the 'nom_ss_100C_1v60' corner at                                                        \n",
+              "'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ss_100C_1v60.lib'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/24-openroad-detailedplacement/tapeout_vedic_mac_16.odb'…       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting RC values… \n" + ], + "text/html": [ + "
[INFO] Setting RC values…                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Configuring cts characterization… \n" + ], + "text/html": [ + "
[INFO] Configuring cts characterization…                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Performing clock tree synthesis… \n" + ], + "text/html": [ + "
[INFO] Performing clock tree synthesis…                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Looking for the following \u001b[1;35mnet\u001b[0m\u001b[1m(\u001b[0ms\u001b[1m)\u001b[0m: clk \n" + ], + "text/html": [ + "
[INFO] Looking for the following net(s): clk                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Running Clock Tree Synthesis… \n" + ], + "text/html": [ + "
[INFO] Running Clock Tree Synthesis…                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0050\u001b[0m\u001b[1m]\u001b[0m Root buffer is sky130_fd_sc_hd__clkbuf_16. \n" + ], + "text/html": [ + "
[INFO CTS-0050] Root buffer is sky130_fd_sc_hd__clkbuf_16.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0051\u001b[0m\u001b[1m]\u001b[0m Sink buffer is sky130_fd_sc_hd__clkbuf_8. \n" + ], + "text/html": [ + "
[INFO CTS-0051] Sink buffer is sky130_fd_sc_hd__clkbuf_8.                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0052\u001b[0m\u001b[1m]\u001b[0m The following clock buffers will be used for CTS: \n" + ], + "text/html": [ + "
[INFO CTS-0052] The following clock buffers will be used for CTS:                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__clkbuf_2 \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__clkbuf_2                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__clkbuf_4 \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__clkbuf_4                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_fd_sc_hd__clkbuf_8 \n" + ], + "text/html": [ + "
sky130_fd_sc_hd__clkbuf_8                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0049\u001b[0m\u001b[1m]\u001b[0m Characterization buffer is sky130_fd_sc_hd__clkbuf_8. \n" + ], + "text/html": [ + "
[INFO CTS-0049] Characterization buffer is sky130_fd_sc_hd__clkbuf_8.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0007\u001b[0m\u001b[1m]\u001b[0m Net \u001b[32m\"clk\"\u001b[0m found for clock \u001b[32m\"clk\"\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0007] Net \"clk\" found for clock \"clk\".                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0010\u001b[0m\u001b[1m]\u001b[0m Clock net \u001b[32m\"clk\"\u001b[0m has \u001b[1;36m32\u001b[0m sinks. \n" + ], + "text/html": [ + "
[INFO CTS-0010]  Clock net \"clk\" has 32 sinks.                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0008\u001b[0m\u001b[1m]\u001b[0m TritonCTS found \u001b[1;36m1\u001b[0m clock nets. \n" + ], + "text/html": [ + "
[INFO CTS-0008] TritonCTS found 1 clock nets.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0097\u001b[0m\u001b[1m]\u001b[0m Characterization used \u001b[1;36m3\u001b[0m \u001b[1;35mbuffer\u001b[0m\u001b[1m(\u001b[0ms\u001b[1m)\u001b[0m types. \n" + ], + "text/html": [ + "
[INFO CTS-0097] Characterization used 3 buffer(s) types.                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0200\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0\u001b[0m placement blockages have been identified. \n" + ], + "text/html": [ + "
[INFO CTS-0200] 0 placement blockages have been identified.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0201\u001b[0m\u001b[1m]\u001b[0m \u001b[1;36m0\u001b[0m placed hard macros will be treated like blockages. \n" + ], + "text/html": [ + "
[INFO CTS-0201] 0 placed hard macros will be treated like blockages.                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0027\u001b[0m\u001b[1m]\u001b[0m Generating H-Tree topology for net clk. \n" + ], + "text/html": [ + "
[INFO CTS-0027] Generating H-Tree topology for net clk.                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Total number of sinks: \u001b[1;36m32\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0028]  Total number of sinks: 32.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0029\u001b[0m\u001b[1m]\u001b[0m Sinks will be clustered in groups of up to \u001b[1;36m25\u001b[0m and with maximum cluster diameter of \u001b[1;36m50.0\u001b[0m um. \n" + ], + "text/html": [ + "
[INFO CTS-0029]  Sinks will be clustered in groups of up to 25 and with maximum cluster diameter of 50.0 um.       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0030\u001b[0m\u001b[1m]\u001b[0m Number of static layers: \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0030]  Number of static layers: 0.                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0020\u001b[0m\u001b[1m]\u001b[0m Wire segment unit: \u001b[1;36m13600\u001b[0m dbu \u001b[1m(\u001b[0m\u001b[1;36m13\u001b[0m um\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0020]  Wire segment unit: 13600  dbu (13 um).                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0023\u001b[0m\u001b[1m]\u001b[0m Original sink region: \u001b[1m[\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m16295\u001b[0m, \u001b[1;36m63980\u001b[0m\u001b[1m)\u001b[0m, \u001b[1m(\u001b[0m\u001b[1;36m42515\u001b[0m, \u001b[1;36m169940\u001b[0m\u001b[1m)\u001b[0m\u001b[1m]\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0023]  Original sink region: [(16295, 63980), (42515, 169940)].                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Normalized sink region: \u001b[1m[\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m1.19816\u001b[0m, \u001b[1;36m4.70441\u001b[0m\u001b[1m)\u001b[0m, \u001b[1m(\u001b[0m\u001b[1;36m3.1261\u001b[0m, \u001b[1;36m12.4956\u001b[0m\u001b[1m)\u001b[0m\u001b[1m]\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0024]  Normalized sink region: [(1.19816, 4.70441), (3.1261, 12.4956)].                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0025\u001b[0m\u001b[1m]\u001b[0m Width: \u001b[1;36m1.9279\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0025]     Width:  1.9279.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0026\u001b[0m\u001b[1m]\u001b[0m Height: \u001b[1;36m7.7912\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0026]     Height: 7.7912.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Level \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Level 1                                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Direction: Vertical \n" + ], + "text/html": [ + "
Direction: Vertical                                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Sinks per sub-region: \u001b[1;36m16\u001b[0m \n" + ], + "text/html": [ + "
Sinks per sub-region: 16                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Sub-region size: \u001b[1;36m1.9279\u001b[0m X \u001b[1;36m3.8956\u001b[0m \n" + ], + "text/html": [ + "
Sub-region size: 1.9279 X 3.8956                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0034\u001b[0m\u001b[1m]\u001b[0m Segment length \u001b[1m(\u001b[0mrounded\u001b[1m)\u001b[0m: \u001b[1;36m2\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0034]     Segment length (rounded): 2.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Level \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Level 2                                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Direction: Horizontal \n" + ], + "text/html": [ + "
Direction: Horizontal                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Sinks per sub-region: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Sinks per sub-region: 8                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Sub-region size: \u001b[1;36m0.9640\u001b[0m X \u001b[1;36m3.8956\u001b[0m \n" + ], + "text/html": [ + "
Sub-region size: 0.9640 X 3.8956                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0034\u001b[0m\u001b[1m]\u001b[0m Segment length \u001b[1m(\u001b[0mrounded\u001b[1m)\u001b[0m: \u001b[1;36m1\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0034]     Segment length (rounded): 1.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0032\u001b[0m\u001b[1m]\u001b[0m Stop criterion found. Max number of sinks is \u001b[1;36m15\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0032]  Stop criterion found. Max number of sinks is 15.                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Number of sinks covered: \u001b[1;36m32\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0035]  Number of sinks covered: 32.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0018\u001b[0m\u001b[1m]\u001b[0m Created \u001b[1;36m5\u001b[0m clock buffers. \n" + ], + "text/html": [ + "
[INFO CTS-0018]     Created 5 clock buffers.                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0012\u001b[0m\u001b[1m]\u001b[0m Minimum number of buffers in the clock path: \u001b[1;36m2\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0012]     Minimum number of buffers in the clock path: 2.                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0013\u001b[0m\u001b[1m]\u001b[0m Maximum number of buffers in the clock path: \u001b[1;36m2\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0013]     Maximum number of buffers in the clock path: 2.                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0015\u001b[0m\u001b[1m]\u001b[0m Created \u001b[1;36m5\u001b[0m clock nets. \n" + ], + "text/html": [ + "
[INFO CTS-0015]     Created 5 clock nets.                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0016\u001b[0m\u001b[1m]\u001b[0m Fanout distribution for the current clock = \u001b[1;92m6:1\u001b[0m, \u001b[1;92m7:1\u001b[0m, \u001b[1;92m8:1\u001b[0m, \u001b[1;92m11:1\u001b[0m.. \n" + ], + "text/html": [ + "
[INFO CTS-0016]     Fanout distribution for the current clock = 6:1, 7:1, 8:1, 11:1..                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0017\u001b[0m\u001b[1m]\u001b[0m Max level of the clock tree: \u001b[1;36m2\u001b[0m. \n" + ], + "text/html": [ + "
[INFO CTS-0017]     Max level of the clock tree: 2.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0098\u001b[0m\u001b[1m]\u001b[0m Clock net \u001b[32m\"clk\"\u001b[0m \n" + ], + "text/html": [ + "
[INFO CTS-0098] Clock net \"clk\"                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0099\u001b[0m\u001b[1m]\u001b[0m Sinks \u001b[1;36m35\u001b[0m \n" + ], + "text/html": [ + "
[INFO CTS-0099]  Sinks 35                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0100\u001b[0m\u001b[1m]\u001b[0m Leaf buffers \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO CTS-0100]  Leaf buffers 0                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0101\u001b[0m\u001b[1m]\u001b[0m Average sink wire length \u001b[1;36m138.65\u001b[0m um \n" + ], + "text/html": [ + "
[INFO CTS-0101]  Average sink wire length 138.65 um                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0102\u001b[0m\u001b[1m]\u001b[0m Path depth \u001b[1;36m2\u001b[0m - \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO CTS-0102]  Path depth 2 - 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO CTS-\u001b[1;36m0207\u001b[0m\u001b[1m]\u001b[0m Leaf load cells \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
[INFO CTS-0207]  Leaf load cells 3                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Repairing long wires on clock nets… \n" + ], + "text/html": [ + "
[INFO] Repairing long wires on clock nets…                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO RSZ-\u001b[1;36m0058\u001b[0m\u001b[1m]\u001b[0m Using max wire length 6335um. \n" + ], + "text/html": [ + "
[INFO RSZ-0058] Using max wire length 6335um.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.odb'…                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.nl.v'…                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.pnl.v'…                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.def'…                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.sdc'…                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Legalizing… \n" + ], + "text/html": [ + "
[INFO] Legalizing…                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Placement Analysis \n" + ], + "text/html": [ + "
Placement Analysis                                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "--------------------------------- \n" + ], + "text/html": [ + "
---------------------------------                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "total displacement \u001b[1;36m101.1\u001b[0m u \n" + ], + "text/html": [ + "
total displacement        101.1 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "average displacement \u001b[1;36m0.0\u001b[0m u \n" + ], + "text/html": [ + "
average displacement        0.0 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "max displacement \u001b[1;36m9.2\u001b[0m u \n" + ], + "text/html": [ + "
max displacement            9.2 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "original HPWL \u001b[1;36m36275.6\u001b[0m u \n" + ], + "text/html": [ + "
original HPWL           36275.6 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "legalized HPWL \u001b[1;36m38385.0\u001b[0m u \n" + ], + "text/html": [ + "
legalized HPWL          38385.0 u                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "delta HPWL \u001b[1;36m6\u001b[0m % \n" + ], + "text/html": [ + "
delta HPWL                    6 %                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0020\u001b[0m\u001b[1m]\u001b[0m Mirrored \u001b[1;36m908\u001b[0m instances \n" + ], + "text/html": [ + "
[INFO DPL-0020] Mirrored 908 instances                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0021\u001b[0m\u001b[1m]\u001b[0m HPWL before \u001b[1;36m38385.0\u001b[0m u \n" + ], + "text/html": [ + "
[INFO DPL-0021] HPWL before           38385.0 u                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0022\u001b[0m\u001b[1m]\u001b[0m HPWL after \u001b[1;36m36397.2\u001b[0m u \n" + ], + "text/html": [ + "
[INFO DPL-0022] HPWL after            36397.2 u                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0023\u001b[0m\u001b[1m]\u001b[0m HPWL delta \u001b[1;36m-5.2\u001b[0m % \n" + ], + "text/html": [ + "
[INFO DPL-0023] HPWL delta               -5.2 %                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.odb'…                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.nl.v'…                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.pnl.v'…                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.def'…                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.sdc'…                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:00]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=959804;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=606180;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:00] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:00]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=91863;file:///tmp/openlane_klayout_tmp_low46dwn/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=49181;file:///tmp/openlane_klayout_tmp_low46dwn/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_low46dwn/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=389816;file:///tmp/openlane_klayout_tmp_low46dwn/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=102733;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=432792;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:00] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_low46dwn/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 14.19s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:01]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=340974;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=717811;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:01] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:01]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=242378;file:///tmp/openlane_klayout_tmp_w2acua8x/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=536548;file:///tmp/openlane_klayout_tmp_w2acua8x/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_w2acua8x/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=871539;file:///tmp/openlane_klayout_tmp_w2acua8x/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=568618;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=476026;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:01] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_w2acua8x/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 14.19s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 45 + } + ], + "source": [ + "# Clock Tree Synthesis\n", + "print(\"Running CTS...\")\n", + "run_step(\"OpenROAD.CTS\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "uy0A5y7neY0s", + "outputId": "06b6f995-1417-428a-ef1e-db5e32d6df5a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running Global Routing...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m───────────────────────────────────────────────── \u001b[0mGlobal Routing\u001b[92m ──────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
───────────────────────────────────────────────── Global Routing ──────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:03]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.GlobalRouting'\u001b[0m… \u001b]8;id=227937;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=819795;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:03] VERBOSE  Running 'OpenROAD.GlobalRouting'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:03]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=692626;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=880097;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=607975;file:///content/openlane_run/26-openroad-globalrouting/openroad-globalrouting.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=173746;file:///content/openlane_run/26-openroad-globalrouting/openroad-globalrouting.log\u001b\\\u001b[1;36m26\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=607975;file:///content/openlane_run/26-openroad-globalrouting/openroad-globalrouting.log\u001b\\\u001b[95m-openroad-globalrouting/openroad-globalrouting.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:03] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/26-openroad-globalrouting/openroad-globalrouting.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/25-openroad-cts/tapeout_vedic_mac_16.odb'…                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting signal min routing layer to: met1 and clock min routing layer to met1. \n" + ], + "text/html": [ + "
[INFO] Setting signal min routing layer to: met1 and clock min routing layer to met1.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting signal max routing layer to: met5 and clock max routing layer to met5. \n" + ], + "text/html": [ + "
[INFO] Setting signal max routing layer to: met5 and clock max routing layer to met5.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "-congestion_iterations \u001b[1;36m50\u001b[0m -verbose \n" + ], + "text/html": [ + "
-congestion_iterations 50 -verbose                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0020\u001b[0m\u001b[1m]\u001b[0m Min routing layer: met1 \n" + ], + "text/html": [ + "
[INFO GRT-0020] Min routing layer: met1                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0021\u001b[0m\u001b[1m]\u001b[0m Max routing layer: met5 \n" + ], + "text/html": [ + "
[INFO GRT-0021] Max routing layer: met5                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0022\u001b[0m\u001b[1m]\u001b[0m Global adjustment: \u001b[1;36m30\u001b[0m% \n" + ], + "text/html": [ + "
[INFO GRT-0022] Global adjustment: 30%                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0023\u001b[0m\u001b[1m]\u001b[0m Grid origin: \u001b[1m(\u001b[0m\u001b[1;36m0\u001b[0m, \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0023] Grid origin: (0, 0)                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0043\u001b[0m\u001b[1m]\u001b[0m No OR_DEFAULT vias defined. \n" + ], + "text/html": [ + "
[INFO GRT-0043] No OR_DEFAULT vias defined.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0088\u001b[0m\u001b[1m]\u001b[0m Layer li1 Track-Pitch = \u001b[1;36m0.4600\u001b[0m line-\u001b[1;36m2\u001b[0m-Via Pitch: \u001b[1;36m0.3400\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0088] Layer li1     Track-Pitch = 0.4600  line-2-Via Pitch: 0.3400                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0088\u001b[0m\u001b[1m]\u001b[0m Layer met1 Track-Pitch = \u001b[1;36m0.3400\u001b[0m line-\u001b[1;36m2\u001b[0m-Via Pitch: \u001b[1;36m0.3400\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0088] Layer met1    Track-Pitch = 0.3400  line-2-Via Pitch: 0.3400                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0088\u001b[0m\u001b[1m]\u001b[0m Layer met2 Track-Pitch = \u001b[1;36m0.4600\u001b[0m line-\u001b[1;36m2\u001b[0m-Via Pitch: \u001b[1;36m0.3500\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0088] Layer met2    Track-Pitch = 0.4600  line-2-Via Pitch: 0.3500                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0088\u001b[0m\u001b[1m]\u001b[0m Layer met3 Track-Pitch = \u001b[1;36m0.6800\u001b[0m line-\u001b[1;36m2\u001b[0m-Via Pitch: \u001b[1;36m0.6150\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0088] Layer met3    Track-Pitch = 0.6800  line-2-Via Pitch: 0.6150                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0088\u001b[0m\u001b[1m]\u001b[0m Layer met4 Track-Pitch = \u001b[1;36m0.9200\u001b[0m line-\u001b[1;36m2\u001b[0m-Via Pitch: \u001b[1;36m1.0400\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0088] Layer met4    Track-Pitch = 0.9200  line-2-Via Pitch: 1.0400                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0088\u001b[0m\u001b[1m]\u001b[0m Layer met5 Track-Pitch = \u001b[1;36m3.4000\u001b[0m line-\u001b[1;36m2\u001b[0m-Via Pitch: \u001b[1;36m3.1100\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0088] Layer met5    Track-Pitch = 3.4000  line-2-Via Pitch: 3.1100                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0019\u001b[0m\u001b[1m]\u001b[0m Found \u001b[1;36m6\u001b[0m clock nets. \n" + ], + "text/html": [ + "
[INFO GRT-0019] Found 6 clock nets.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0001\u001b[0m\u001b[1m]\u001b[0m Minimum degree: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0001] Minimum degree: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0002\u001b[0m\u001b[1m]\u001b[0m Maximum degree: \u001b[1;36m33\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0002] Maximum degree: 33                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0003\u001b[0m\u001b[1m]\u001b[0m Macros: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0003] Macros: 0                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0043\u001b[0m\u001b[1m]\u001b[0m No OR_DEFAULT vias defined. \n" + ], + "text/html": [ + "
[INFO GRT-0043] No OR_DEFAULT vias defined.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0004\u001b[0m\u001b[1m]\u001b[0m Blockages: \u001b[1;36m1793\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0004] Blockages: 1793                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0053\u001b[0m\u001b[1m]\u001b[0m Routing resources analysis: \n" + ], + "text/html": [ + "
[INFO GRT-0053] Routing resources analysis:                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Routing Original Derated Resource \n" + ], + "text/html": [ + "
Routing      Original      Derated      Resource                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Layer Direction Resources Resources Reduction \u001b[1m(\u001b[0m%\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
Layer     Direction    Resources     Resources    Reduction (%)                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "--------------------------------------------------------------- \n" + ], + "text/html": [ + "
---------------------------------------------------------------                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "li1 Vertical \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0.00\u001b[0m% \n" + ], + "text/html": [ + "
li1        Vertical            0             0          0.00%                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met1 Horizontal \u001b[1;36m16844\u001b[0m \u001b[1;36m8223\u001b[0m \u001b[1;36m51.18\u001b[0m% \n" + ], + "text/html": [ + "
met1       Horizontal      16844          8223          51.18%                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met2 Vertical \u001b[1;36m12870\u001b[0m \u001b[1;36m8268\u001b[0m \u001b[1;36m35.76\u001b[0m% \n" + ], + "text/html": [ + "
met2       Vertical        12870          8268          35.76%                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met3 Horizontal \u001b[1;36m8408\u001b[0m \u001b[1;36m5443\u001b[0m \u001b[1;36m35.26\u001b[0m% \n" + ], + "text/html": [ + "
met3       Horizontal       8408          5443          35.26%                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met4 Vertical \u001b[1;36m5202\u001b[0m \u001b[1;36m3146\u001b[0m \u001b[1;36m39.52\u001b[0m% \n" + ], + "text/html": [ + "
met4       Vertical         5202          3146          39.52%                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met5 Horizontal \u001b[1;36m1676\u001b[0m \u001b[1;36m756\u001b[0m \u001b[1;36m54.89\u001b[0m% \n" + ], + "text/html": [ + "
met5       Horizontal       1676           756          54.89%                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "--------------------------------------------------------------- \n" + ], + "text/html": [ + "
---------------------------------------------------------------                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0197\u001b[0m\u001b[1m]\u001b[0m Via related to pin nodes: \u001b[1;36m9689\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0197] Via related to pin nodes: 9689                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0198\u001b[0m\u001b[1m]\u001b[0m Via related Steiner nodes: \u001b[1;36m101\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0198] Via related Steiner nodes: 101                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0199\u001b[0m\u001b[1m]\u001b[0m Via filling finished. \n" + ], + "text/html": [ + "
[INFO GRT-0199] Via filling finished.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0111\u001b[0m\u001b[1m]\u001b[0m Final number of vias: \u001b[1;36m11732\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0111] Final number of vias: 11732                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0112\u001b[0m\u001b[1m]\u001b[0m Final usage 3D: \u001b[1;36m40986\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0112] Final usage 3D: 40986                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0096\u001b[0m\u001b[1m]\u001b[0m Final congestion report: \n" + ], + "text/html": [ + "
[INFO GRT-0096] Final congestion report:                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Layer Resource Demand Usage \u001b[1m(\u001b[0m%\u001b[1m)\u001b[0m Max H \u001b[35m/\u001b[0m Max V \u001b[35m/\u001b[0m Total Overflow \n" + ], + "text/html": [ + "
Layer         Resource        Demand        Usage (%)    Max H / Max V / Total Overflow                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "--------------------------------------------------------------------------------------- \n" + ], + "text/html": [ + "
---------------------------------------------------------------------------------------                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "li1 \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0.00\u001b[0m% \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
li1                  0             0            0.00%             0 /  0 /  0                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met1 \u001b[1;36m8223\u001b[0m \u001b[1;36m2751\u001b[0m \u001b[1;36m33.45\u001b[0m% \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met1              8223          2751           33.45%             0 /  0 /  0                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met2 \u001b[1;36m8268\u001b[0m \u001b[1;36m2664\u001b[0m \u001b[1;36m32.22\u001b[0m% \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met2              8268          2664           32.22%             0 /  0 /  0                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met3 \u001b[1;36m5443\u001b[0m \u001b[1;36m331\u001b[0m \u001b[1;36m6.08\u001b[0m% \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met3              5443           331            6.08%             0 /  0 /  0                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met4 \u001b[1;36m3146\u001b[0m \u001b[1;36m44\u001b[0m \u001b[1;36m1.40\u001b[0m% \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met4              3146            44            1.40%             0 /  0 /  0                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met5 \u001b[1;36m756\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0.00\u001b[0m% \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met5               756             0            0.00%             0 /  0 /  0                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "--------------------------------------------------------------------------------------- \n" + ], + "text/html": [ + "
---------------------------------------------------------------------------------------                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total \u001b[1;36m25836\u001b[0m \u001b[1;36m5790\u001b[0m \u001b[1;36m22.41\u001b[0m% \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Total            25836          5790           22.41%             0 /  0 /  0                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0018\u001b[0m\u001b[1m]\u001b[0m Total wirelength: \u001b[1;36m67468\u001b[0m um \n" + ], + "text/html": [ + "
[INFO GRT-0018] Total wirelength: 67468 um                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO GRT-\u001b[1;36m0014\u001b[0m\u001b[1m]\u001b[0m Routed nets: \u001b[1;36m1905\u001b[0m \n" + ], + "text/html": [ + "
[INFO GRT-0014] Routed nets: 1905                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting RC values… \n" + ], + "text/html": [ + "
[INFO] Setting RC values…                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/26-openroad-globalrouting/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/26-openroad-globalrouting/tapeout_vedic_mac_16.odb'…           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/26-openroad-globalrouting/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/26-openroad-globalrouting/tapeout_vedic_mac_16.def'…                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:04]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=511657;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=773378;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:04] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:04]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=938791;file:///tmp/openlane_klayout_tmp_k2qclh8i/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=607228;file:///tmp/openlane_klayout_tmp_k2qclh8i/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_k2qclh8i/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=163426;file:///tmp/openlane_klayout_tmp_k2qclh8i/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=642025;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=145145;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:04] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_k2qclh8i/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.63s\n#### Views updated:\n* Design Exchange Format\n* OpenDB Database\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 46 + } + ], + "source": [ + "# Global Routing\n", + "print(\"Running Global Routing...\")\n", + "run_step(\"OpenROAD.GlobalRouting\", show=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "UWCcB8dreY0s", + "outputId": "d1904c71-4e0d-4633-b38c-e11ece18e3c5" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running Detailed Routing (may take a few minutes)...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────────── \u001b[0mDetailed Routing\u001b[92m ─────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────────── Detailed Routing ─────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:05]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.DetailedRouting'\u001b[0m… \u001b]8;id=966534;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=717380;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:05] VERBOSE  Running 'OpenROAD.DetailedRouting'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:05]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Running TritonRoute with \u001b[1;36m2\u001b[0m threads… \u001b]8;id=962316;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=203127;file:///content/openlane_ipynb/openlane/steps/openroad.py#1619\u001b\\\u001b[2m1619\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:01:05] INFO     Running TritonRoute with 2 threads…                                            openroad.py:1619\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:05]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=61022;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=626593;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=612787;file:///content/openlane_run/27-openroad-detailedrouting/openroad-detailedrouting.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=737596;file:///content/openlane_run/27-openroad-detailedrouting/openroad-detailedrouting.log\u001b\\\u001b[1;36m27\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=612787;file:///content/openlane_run/27-openroad-detailedrouting/openroad-detailedrouting.log\u001b\\\u001b[95m-openroad-detailedrouting/openroad-detailedrouting.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:05] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/27-openroad-detailedrouting/openroad-detailedrouting.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/26-openroad-globalrouting/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/26-openroad-globalrouting/tapeout_vedic_mac_16.odb'…           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO ORD-\u001b[1;36m0030\u001b[0m\u001b[1m]\u001b[0m Using \u001b[1;36m2\u001b[0m \u001b[1;35mthread\u001b[0m\u001b[1m(\u001b[0ms\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO ORD-0030] Using 2 thread(s).                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0149\u001b[0m\u001b[1m]\u001b[0m Reading tech and libs. \n" + ], + "text/html": [ + "
[INFO DRT-0149] Reading tech and libs.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=53984;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=613033;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer mcon\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer mcon                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=377953;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=376454;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer mcon\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer mcon                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=65961;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=336620;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer via\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer via                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=925427;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=619014;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer via\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer via                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=95887;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=713155;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer via2\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer via2                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=30502;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=682945;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer via2\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer via2                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=211968;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=649178;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer via3\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer via3                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=411996;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=431927;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer via3\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer via3                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=512704;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=571346;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer via4\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer via4                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:01:06]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m \u001b[1;33m[\u001b[0m\u001b[33mDRT-\u001b[0m\u001b[1;36m0349\u001b[0m\u001b[1;33m]\u001b[0m\u001b[33m LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for \u001b[0m \u001b]8;id=274365;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=594482;file:///content/openlane_ipynb/openlane/steps/openroad.py#235\u001b\\\u001b[2m235\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mlayer via4\u001b[0m \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:01:06] WARNING  [DRT-0349] LEF58_ENCLOSURE with no CUTCLASS is not supported. Skipping for      openroad.py:235\n",
+              "                    layer via4                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Units: \u001b[1;36m1000\u001b[0m \n" + ], + "text/html": [ + "
Units:                1000                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of layers: \u001b[1;36m13\u001b[0m \n" + ], + "text/html": [ + "
Number of layers:     13                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of macros: \u001b[1;36m441\u001b[0m \n" + ], + "text/html": [ + "
Number of macros:     441                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of vias: \u001b[1;36m29\u001b[0m \n" + ], + "text/html": [ + "
Number of vias:       29                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of viarulegen: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Number of viarulegen: 25                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0150\u001b[0m\u001b[1m]\u001b[0m Reading design. \n" + ], + "text/html": [ + "
[INFO DRT-0150] Reading design.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Design: tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Design:                   tapeout_vedic_mac_16                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Die area: \u001b[1m(\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1m)\u001b[0m \u001b[1m(\u001b[0m \u001b[1;36m197220\u001b[0m \u001b[1;36m207940\u001b[0m \u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
Die area:                 ( 0 0 ) ( 197220 207940 )                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of track patterns: \u001b[1;36m12\u001b[0m \n" + ], + "text/html": [ + "
Number of track patterns: 12                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of DEF vias: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Number of DEF vias:       0                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of components: \u001b[1;36m2459\u001b[0m \n" + ], + "text/html": [ + "
Number of components:     2459                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of terminals: \u001b[1;36m109\u001b[0m \n" + ], + "text/html": [ + "
Number of terminals:      109                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of snets: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Number of snets:          2                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of nets: \u001b[1;36m1905\u001b[0m \n" + ], + "text/html": [ + "
Number of nets:           1905                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0167\u001b[0m\u001b[1m]\u001b[0m List of default vias: \n" + ], + "text/html": [ + "
[INFO DRT-0167] List of default vias:                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Layer via \n" + ], + "text/html": [ + "
Layer via                                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "default via: M1M2_PR \n" + ], + "text/html": [ + "
default via: M1M2_PR                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Layer via2 \n" + ], + "text/html": [ + "
Layer via2                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "default via: M2M3_PR \n" + ], + "text/html": [ + "
default via: M2M3_PR                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Layer via3 \n" + ], + "text/html": [ + "
Layer via3                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "default via: M3M4_PR \n" + ], + "text/html": [ + "
default via: M3M4_PR                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Layer via4 \n" + ], + "text/html": [ + "
Layer via4                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "default via: M4M5_PR \n" + ], + "text/html": [ + "
default via: M4M5_PR                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0162\u001b[0m\u001b[1m]\u001b[0m Library cell analysis. \n" + ], + "text/html": [ + "
[INFO DRT-0162] Library cell analysis.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0163\u001b[0m\u001b[1m]\u001b[0m Instance analysis. \n" + ], + "text/html": [ + "
[INFO DRT-0163] Instance analysis.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0164\u001b[0m\u001b[1m]\u001b[0m Number of unique instances = \u001b[1;36m172\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0164] Number of unique instances = 172.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0168\u001b[0m\u001b[1m]\u001b[0m Init region query. \n" + ], + "text/html": [ + "
[INFO DRT-0168] Init region query.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete FR_MASTERSLICE. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete FR_MASTERSLICE.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete Fr_VIA. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete Fr_VIA.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete li1. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete li1.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete mcon. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete mcon.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete met1. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete met1.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete via. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete via.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete met2. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete met2.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete via2. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete via2.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete met3. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete met3.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete via3. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete via3.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete met4. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete met4.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete via4. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete via4.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0024\u001b[0m\u001b[1m]\u001b[0m Complete met5. \n" + ], + "text/html": [ + "
[INFO DRT-0024]   Complete met5.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m FR_MASTERSLICE shape region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] FR_MASTERSLICE shape region query size = 0.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m FR_VIA shape region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] FR_VIA shape region query size = 0.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m li1 shape region query size = \u001b[1;36m53570\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] li1 shape region query size = 53570.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m mcon shape region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] mcon shape region query size = 0.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m met1 shape region query size = \u001b[1;36m6915\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] met1 shape region query size = 6915.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m via shape region query size = \u001b[1;36m690\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] via shape region query size = 690.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m met2 shape region query size = \u001b[1;36m414\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] met2 shape region query size = 414.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m via2 shape region query size = \u001b[1;36m552\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] via2 shape region query size = 552.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m met3 shape region query size = \u001b[1;36m521\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] met3 shape region query size = 521.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m via3 shape region query size = \u001b[1;36m552\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] via3 shape region query size = 552.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m met4 shape region query size = \u001b[1;36m154\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] met4 shape region query size = 154.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m via4 shape region query size = \u001b[1;36m8\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] via4 shape region query size = 8.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0033\u001b[0m\u001b[1m]\u001b[0m met5 shape region query size = \u001b[1;36m16\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0033] met5 shape region query size = 16.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0165\u001b[0m\u001b[1m]\u001b[0m Start pin access. \n" + ], + "text/html": [ + "
[INFO DRT-0165] Start pin access.                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0078\u001b[0m\u001b[1m]\u001b[0m Complete \u001b[1;36m693\u001b[0m pins. \n" + ], + "text/html": [ + "
[INFO DRT-0078]   Complete 693 pins.                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0079\u001b[0m\u001b[1m]\u001b[0m Complete \u001b[1;36m100\u001b[0m unique inst patterns. \n" + ], + "text/html": [ + "
[INFO DRT-0079]   Complete 100 unique inst patterns.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0081\u001b[0m\u001b[1m]\u001b[0m Complete \u001b[1;36m166\u001b[0m unique inst patterns. \n" + ], + "text/html": [ + "
[INFO DRT-0081]   Complete 166 unique inst patterns.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0084\u001b[0m\u001b[1m]\u001b[0m Complete \u001b[1;36m1110\u001b[0m groups. \n" + ], + "text/html": [ + "
[INFO DRT-0084]   Complete 1110 groups.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#scanned instances = \u001b[1;36m2459\u001b[0m \n" + ], + "text/html": [ + "
#scanned instances     = 2459                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#unique instances = \u001b[1;36m172\u001b[0m \n" + ], + "text/html": [ + "
#unique  instances     = 172                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#stdCellGenAp = \u001b[1;36m4964\u001b[0m \n" + ], + "text/html": [ + "
#stdCellGenAp          = 4964                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#stdCellValidPlanarAp = \u001b[1;36m44\u001b[0m \n" + ], + "text/html": [ + "
#stdCellValidPlanarAp  = 44                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#stdCellValidViaAp = \u001b[1;36m3880\u001b[0m \n" + ], + "text/html": [ + "
#stdCellValidViaAp     = 3880                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#stdCellPinNoAp = \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
#stdCellPinNoAp        = 0                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#stdCellPinCnt = \u001b[1;36m6518\u001b[0m \n" + ], + "text/html": [ + "
#stdCellPinCnt         = 6518                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#instTermValidViaApCnt = \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
#instTermValidViaApCnt = 0                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#macroGenAp = \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
#macroGenAp            = 0                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#macroValidPlanarAp = \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
#macroValidPlanarAp    = 0                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#macroValidViaAp = \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
#macroValidViaAp       = 0                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "#macroNoAp = \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
#macroNoAp             = 0                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0166\u001b[0m\u001b[1m]\u001b[0m Complete pin access. \n" + ], + "text/html": [ + "
[INFO DRT-0166] Complete pin access.                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0267\u001b[0m\u001b[1m]\u001b[0m cpu time = \u001b[1;92m00:00:58\u001b[0m, elapsed time = \u001b[1;92m00:00:37\u001b[0m, memory = \u001b[1;36m126.44\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m, peak = \u001b[1;36m253.19\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO DRT-0267] cpu time = 00:00:58, elapsed time = 00:00:37, memory = 126.44 (MB), peak = 253.19 (MB)             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Number of guides: \u001b[1;36m12233\u001b[0m \n" + ], + "text/html": [ + "
Number of guides:     12233                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0169\u001b[0m\u001b[1m]\u001b[0m Post process guides. \n" + ], + "text/html": [ + "
[INFO DRT-0169] Post process guides.                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0176\u001b[0m\u001b[1m]\u001b[0m GCELLGRID X \u001b[1;36m0\u001b[0m DO \u001b[1;36m28\u001b[0m STEP \u001b[1;36m6900\u001b[0m ; \n" + ], + "text/html": [ + "
[INFO DRT-0176] GCELLGRID X 0 DO 28 STEP 6900 ;                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0177\u001b[0m\u001b[1m]\u001b[0m GCELLGRID Y \u001b[1;36m0\u001b[0m DO \u001b[1;36m30\u001b[0m STEP \u001b[1;36m6900\u001b[0m ; \n" + ], + "text/html": [ + "
[INFO DRT-0177] GCELLGRID Y 0 DO 30 STEP 6900 ;                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete FR_MASTERSLICE. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete FR_MASTERSLICE.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete Fr_VIA. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete Fr_VIA.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete li1. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete li1.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete mcon. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete mcon.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete met1. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete met1.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete via. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete via.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete met2. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete met2.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete via2. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete via2.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete met3. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete met3.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete via3. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete via3.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete met4. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete met4.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete via4. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete via4.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0028\u001b[0m\u001b[1m]\u001b[0m Complete met5. \n" + ], + "text/html": [ + "
[INFO DRT-0028]   Complete met5.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0178\u001b[0m\u001b[1m]\u001b[0m Init guide query. \n" + ], + "text/html": [ + "
[INFO DRT-0178] Init guide query.                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete FR_MASTERSLICE \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete FR_MASTERSLICE (guide).                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete Fr_VIA \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete Fr_VIA (guide).                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete li1 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete li1 (guide).                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete mcon \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete mcon (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete met1 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete met1 (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete via \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete via (guide).                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete met2 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete met2 (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete via2 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete via2 (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete met3 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete met3 (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete via3 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete via3 (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete met4 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete met4 (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete via4 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete via4 (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0035\u001b[0m\u001b[1m]\u001b[0m Complete met5 \u001b[1m(\u001b[0mguide\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0035]   Complete met5 (guide).                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m FR_MASTERSLICE guide region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] FR_MASTERSLICE guide region query size = 0.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m FR_VIA guide region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] FR_VIA guide region query size = 0.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m li1 guide region query size = \u001b[1;36m4537\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] li1 guide region query size = 4537.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m mcon guide region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] mcon guide region query size = 0.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m met1 guide region query size = \u001b[1;36m3296\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] met1 guide region query size = 3296.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m via guide region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] via guide region query size = 0.                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m met2 guide region query size = \u001b[1;36m1587\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] met2 guide region query size = 1587.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m via2 guide region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] via2 guide region query size = 0.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m met3 guide region query size = \u001b[1;36m124\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] met3 guide region query size = 124.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m via3 guide region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] via3 guide region query size = 0.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m met4 guide region query size = \u001b[1;36m5\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] met4 guide region query size = 5.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m via4 guide region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] via4 guide region query size = 0.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0036\u001b[0m\u001b[1m]\u001b[0m met5 guide region query size = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0036] met5 guide region query size = 0.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0179\u001b[0m\u001b[1m]\u001b[0m Init gr pin query. \n" + ], + "text/html": [ + "
[INFO DRT-0179] Init gr pin query.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0245\u001b[0m\u001b[1m]\u001b[0m skipped writing guide updates to database. \n" + ], + "text/html": [ + "
[INFO DRT-0245] skipped writing guide updates to database.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0185\u001b[0m\u001b[1m]\u001b[0m Post process initialize RPin region query. \n" + ], + "text/html": [ + "
[INFO DRT-0185] Post process initialize RPin region query.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0181\u001b[0m\u001b[1m]\u001b[0m Start track assignment. \n" + ], + "text/html": [ + "
[INFO DRT-0181] Start track assignment.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0184\u001b[0m\u001b[1m]\u001b[0m Done with \u001b[1;36m6129\u001b[0m vertical wires in \u001b[1;36m1\u001b[0m frboxes and \u001b[1;36m3420\u001b[0m horizontal wires in \u001b[1;36m1\u001b[0m frboxes. \n" + ], + "text/html": [ + "
[INFO DRT-0184] Done with 6129 vertical wires in 1 frboxes and 3420 horizontal wires in 1 frboxes.                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0186\u001b[0m\u001b[1m]\u001b[0m Done with \u001b[1;36m499\u001b[0m vertical wires in \u001b[1;36m1\u001b[0m frboxes and \u001b[1;36m999\u001b[0m horizontal wires in \u001b[1;36m1\u001b[0m frboxes. \n" + ], + "text/html": [ + "
[INFO DRT-0186] Done with 499 vertical wires in 1 frboxes and 999 horizontal wires in 1 frboxes.                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0182\u001b[0m\u001b[1m]\u001b[0m Complete track assignment. \n" + ], + "text/html": [ + "
[INFO DRT-0182] Complete track assignment.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0267\u001b[0m\u001b[1m]\u001b[0m cpu time = \u001b[1;92m00:00:01\u001b[0m, elapsed time = \u001b[1;92m00:00:01\u001b[0m, memory = \u001b[1;36m144.55\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m, peak = \u001b[1;36m253.19\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO DRT-0267] cpu time = 00:00:01, elapsed time = 00:00:01, memory = 144.55 (MB), peak = 253.19 (MB)             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0187\u001b[0m\u001b[1m]\u001b[0m Start routing data preparation. \n" + ], + "text/html": [ + "
[INFO DRT-0187] Start routing data preparation.                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0267\u001b[0m\u001b[1m]\u001b[0m cpu time = \u001b[1;92m00:00:00\u001b[0m, elapsed time = \u001b[1;92m00:00:00\u001b[0m, memory = \u001b[1;36m144.55\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m, peak = \u001b[1;36m253.19\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO DRT-0267] cpu time = 00:00:00, elapsed time = 00:00:00, memory = 144.55 (MB), peak = 253.19 (MB)             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0194\u001b[0m\u001b[1m]\u001b[0m Start detail routing. \n" + ], + "text/html": [ + "
[INFO DRT-0194] Start detail routing.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0195\u001b[0m\u001b[1m]\u001b[0m Start 0th optimization iteration. \n" + ], + "text/html": [ + "
[INFO DRT-0195] Start 0th optimization iteration.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m10\u001b[0m% with \u001b[1;36m0\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 10% with 0 violations.                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:01\u001b[0m, memory = \u001b[1;36m166.29\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:01, memory = 166.29 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m20\u001b[0m% with \u001b[1;36m0\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 20% with 0 violations.                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:01\u001b[0m, memory = \u001b[1;36m166.35\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:01, memory = 166.35 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m30\u001b[0m% with \u001b[1;36m87\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 30% with 87 violations.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:06\u001b[0m, memory = \u001b[1;36m193.92\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:06, memory = 193.92 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m40\u001b[0m% with \u001b[1;36m87\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 40% with 87 violations.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:07\u001b[0m, memory = \u001b[1;36m194.70\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:07, memory = 194.70 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m50\u001b[0m% with \u001b[1;36m87\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 50% with 87 violations.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:11\u001b[0m, memory = \u001b[1;36m180.71\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:11, memory = 180.71 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m60\u001b[0m% with \u001b[1;36m204\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 60% with 204 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:17\u001b[0m, memory = \u001b[1;36m215.82\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:17, memory = 215.82 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m70\u001b[0m% with \u001b[1;36m204\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 70% with 204 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:19\u001b[0m, memory = \u001b[1;36m202.86\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:19, memory = 202.86 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m80\u001b[0m% with \u001b[1;36m204\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 80% with 204 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:21\u001b[0m, memory = \u001b[1;36m207.12\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:21, memory = 207.12 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m90\u001b[0m% with \u001b[1;36m351\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 90% with 351 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:33\u001b[0m, memory = \u001b[1;36m233.45\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:33, memory = 233.45 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m100\u001b[0m% with \u001b[1;36m519\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 100% with 519 violations.                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:39\u001b[0m, memory = \u001b[1;36m225.43\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:39, memory = 225.43 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0199\u001b[0m\u001b[1m]\u001b[0m Number of violations = \u001b[1;36m711\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0199]   Number of violations = 711.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Viol/Layer li1 mcon met1 via met2 met3 \n" + ], + "text/html": [ + "
Viol/Layer         li1   mcon   met1    via   met2   met3                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Cut Spacing \u001b[1;36m0\u001b[0m \u001b[1;36m4\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Cut Spacing          0      4      0      0      0      0                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Metal Spacing \u001b[1;36m32\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m156\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m38\u001b[0m \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Metal Spacing       32      0    156      0     38      4                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Min Hole \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m1\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Min Hole             0      0      1      0      0      0                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Recheck \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m121\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m71\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Recheck              0      0    121      0     71      0                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Short \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m264\u001b[0m \u001b[1;36m1\u001b[0m \u001b[1;36m19\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Short                0      0    264      1     19      0                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0267\u001b[0m\u001b[1m]\u001b[0m cpu time = \u001b[1;92m00:01:01\u001b[0m, elapsed time = \u001b[1;92m00:00:41\u001b[0m, memory = \u001b[1;36m547.82\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m, peak = \u001b[1;36m547.59\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO DRT-0267] cpu time = 00:01:01, elapsed time = 00:00:41, memory = 547.82 (MB), peak = 547.59 (MB)             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length = \u001b[1;36m42596\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length = 42596 um.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER li1 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER li1 = 0 um.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met1 = \u001b[1;36m20177\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met1 = 20177 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met2 = \u001b[1;36m18442\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met2 = 18442 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met3 = \u001b[1;36m3696\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met3 = 3696 um.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met4 = \u001b[1;36m280\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met4 = 280 um.                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met5 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met5 = 0 um.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total number of vias = \u001b[1;36m12777\u001b[0m. \n" + ], + "text/html": [ + "
Total number of vias = 12777.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Up-via summary \u001b[1m(\u001b[0mtotal \u001b[1;36m12777\u001b[0m\u001b[1m)\u001b[0m: \n" + ], + "text/html": [ + "
Up-via summary (total 12777):                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "FR_MASTERSLICE \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
FR_MASTERSLICE        0                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "li1 \u001b[1;36m6389\u001b[0m \n" + ], + "text/html": [ + "
li1     6389                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met1 \u001b[1;36m6239\u001b[0m \n" + ], + "text/html": [ + "
met1     6239                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met2 \u001b[1;36m140\u001b[0m \n" + ], + "text/html": [ + "
met2      140                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met3 \u001b[1;36m9\u001b[0m \n" + ], + "text/html": [ + "
met3        9                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met4 \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met4        0                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m12777\u001b[0m \n" + ], + "text/html": [ + "
12777                                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0195\u001b[0m\u001b[1m]\u001b[0m Start 1st optimization iteration. \n" + ], + "text/html": [ + "
[INFO DRT-0195] Start 1st optimization iteration.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m10\u001b[0m% with \u001b[1;36m711\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 10% with 711 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:01\u001b[0m, memory = \u001b[1;36m547.82\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:01, memory = 547.82 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m20\u001b[0m% with \u001b[1;36m711\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 20% with 711 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:01\u001b[0m, memory = \u001b[1;36m547.82\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:01, memory = 547.82 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m30\u001b[0m% with \u001b[1;36m711\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 30% with 711 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:03\u001b[0m, memory = \u001b[1;36m547.82\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:03, memory = 547.82 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m40\u001b[0m% with \u001b[1;36m616\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 40% with 616 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:06\u001b[0m, memory = \u001b[1;36m557.95\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:06, memory = 557.95 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m50\u001b[0m% with \u001b[1;36m616\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 50% with 616 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:09\u001b[0m, memory = \u001b[1;36m557.95\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:09, memory = 557.95 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m60\u001b[0m% with \u001b[1;36m616\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 60% with 616 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:10\u001b[0m, memory = \u001b[1;36m557.95\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:10, memory = 557.95 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m70\u001b[0m% with \u001b[1;36m512\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 70% with 512 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:18\u001b[0m, memory = \u001b[1;36m576.12\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:18, memory = 576.12 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m80\u001b[0m% with \u001b[1;36m512\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 80% with 512 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:19\u001b[0m, memory = \u001b[1;36m576.12\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:19, memory = 576.12 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m90\u001b[0m% with \u001b[1;36m350\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 90% with 350 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:26\u001b[0m, memory = \u001b[1;36m557.95\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:26, memory = 557.95 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m100\u001b[0m% with \u001b[1;36m204\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 100% with 204 violations.                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:32\u001b[0m, memory = \u001b[1;36m557.95\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:32, memory = 557.95 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0199\u001b[0m\u001b[1m]\u001b[0m Number of violations = \u001b[1;36m204\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0199]   Number of violations = 204.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Viol/Layer mcon met1 met2 \n" + ], + "text/html": [ + "
Viol/Layer        mcon   met1   met2                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Cut Spacing \u001b[1;36m1\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
Cut Spacing          1      0      0                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Metal Spacing \u001b[1;36m0\u001b[0m \u001b[1;36m51\u001b[0m \u001b[1;36m12\u001b[0m \n" + ], + "text/html": [ + "
Metal Spacing        0     51     12                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Short \u001b[1;36m0\u001b[0m \u001b[1;36m138\u001b[0m \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Short                0    138      2                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0267\u001b[0m\u001b[1m]\u001b[0m cpu time = \u001b[1;92m00:00:48\u001b[0m, elapsed time = \u001b[1;92m00:00:32\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m, peak = \u001b[1;36m575.84\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO DRT-0267] cpu time = 00:00:48, elapsed time = 00:00:32, memory = 558.11 (MB), peak = 575.84 (MB)             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length = \u001b[1;36m42241\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length = 42241 um.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER li1 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER li1 = 0 um.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met1 = \u001b[1;36m19979\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met1 = 19979 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met2 = \u001b[1;36m18267\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met2 = 18267 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met3 = \u001b[1;36m3715\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met3 = 3715 um.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met4 = \u001b[1;36m278\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met4 = 278 um.                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met5 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met5 = 0 um.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total number of vias = \u001b[1;36m12652\u001b[0m. \n" + ], + "text/html": [ + "
Total number of vias = 12652.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Up-via summary \u001b[1m(\u001b[0mtotal \u001b[1;36m12652\u001b[0m\u001b[1m)\u001b[0m: \n" + ], + "text/html": [ + "
Up-via summary (total 12652):                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "FR_MASTERSLICE \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
FR_MASTERSLICE        0                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "li1 \u001b[1;36m6379\u001b[0m \n" + ], + "text/html": [ + "
li1     6379                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met1 \u001b[1;36m6114\u001b[0m \n" + ], + "text/html": [ + "
met1     6114                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met2 \u001b[1;36m150\u001b[0m \n" + ], + "text/html": [ + "
met2      150                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met3 \u001b[1;36m9\u001b[0m \n" + ], + "text/html": [ + "
met3        9                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met4 \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met4        0                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m12652\u001b[0m \n" + ], + "text/html": [ + "
12652                                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0195\u001b[0m\u001b[1m]\u001b[0m Start 2nd optimization iteration. \n" + ], + "text/html": [ + "
[INFO DRT-0195] Start 2nd optimization iteration.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m10\u001b[0m% with \u001b[1;36m204\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 10% with 204 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:00\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:00, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m20\u001b[0m% with \u001b[1;36m204\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 20% with 204 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:01\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:01, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m30\u001b[0m% with \u001b[1;36m204\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 30% with 204 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:04\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:04, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m40\u001b[0m% with \u001b[1;36m205\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 40% with 205 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:05\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:05, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m50\u001b[0m% with \u001b[1;36m205\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 50% with 205 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:10\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:10, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m60\u001b[0m% with \u001b[1;36m205\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 60% with 205 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:15\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:15, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m70\u001b[0m% with \u001b[1;36m220\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 70% with 220 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:18\u001b[0m, memory = \u001b[1;36m576.83\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:18, memory = 576.83 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m80\u001b[0m% with \u001b[1;36m220\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 80% with 220 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:19\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:19, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m90\u001b[0m% with \u001b[1;36m202\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 90% with 202 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:22\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:22, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m100\u001b[0m% with \u001b[1;36m162\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 100% with 162 violations.                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:25\u001b[0m, memory = \u001b[1;36m558.11\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:25, memory = 558.11 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0199\u001b[0m\u001b[1m]\u001b[0m Number of violations = \u001b[1;36m162\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0199]   Number of violations = 162.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Viol/Layer met1 met2 \n" + ], + "text/html": [ + "
Viol/Layer        met1   met2                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Metal Spacing \u001b[1;36m38\u001b[0m \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Metal Spacing       38      8                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Short \u001b[1;36m115\u001b[0m \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Short              115      1                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0267\u001b[0m\u001b[1m]\u001b[0m cpu time = \u001b[1;92m00:00:41\u001b[0m, elapsed time = \u001b[1;92m00:00:25\u001b[0m, memory = \u001b[1;36m558.47\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m, peak = \u001b[1;36m576.51\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO DRT-0267] cpu time = 00:00:41, elapsed time = 00:00:25, memory = 558.47 (MB), peak = 576.51 (MB)             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length = \u001b[1;36m42111\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length = 42111 um.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER li1 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER li1 = 0 um.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met1 = \u001b[1;36m19793\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met1 = 19793 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met2 = \u001b[1;36m18288\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met2 = 18288 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met3 = \u001b[1;36m3743\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met3 = 3743 um.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met4 = \u001b[1;36m285\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met4 = 285 um.                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met5 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met5 = 0 um.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total number of vias = \u001b[1;36m12712\u001b[0m. \n" + ], + "text/html": [ + "
Total number of vias = 12712.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Up-via summary \u001b[1m(\u001b[0mtotal \u001b[1;36m12712\u001b[0m\u001b[1m)\u001b[0m: \n" + ], + "text/html": [ + "
Up-via summary (total 12712):                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "FR_MASTERSLICE \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
FR_MASTERSLICE        0                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "li1 \u001b[1;36m6379\u001b[0m \n" + ], + "text/html": [ + "
li1     6379                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met1 \u001b[1;36m6169\u001b[0m \n" + ], + "text/html": [ + "
met1     6169                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met2 \u001b[1;36m154\u001b[0m \n" + ], + "text/html": [ + "
met2      154                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met3 \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
met3       10                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met4 \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met4        0                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m12712\u001b[0m \n" + ], + "text/html": [ + "
12712                                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0195\u001b[0m\u001b[1m]\u001b[0m Start 3rd optimization iteration. \n" + ], + "text/html": [ + "
[INFO DRT-0195] Start 3rd optimization iteration.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m10\u001b[0m% with \u001b[1;36m162\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 10% with 162 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:01\u001b[0m, memory = \u001b[1;36m558.47\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:01, memory = 558.47 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m20\u001b[0m% with \u001b[1;36m162\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 20% with 162 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:01\u001b[0m, memory = \u001b[1;36m558.47\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:01, memory = 558.47 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m30\u001b[0m% with \u001b[1;36m151\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 30% with 151 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:02\u001b[0m, memory = \u001b[1;36m558.47\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:02, memory = 558.47 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m40\u001b[0m% with \u001b[1;36m151\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 40% with 151 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:03\u001b[0m, memory = \u001b[1;36m558.47\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:03, memory = 558.47 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m50\u001b[0m% with \u001b[1;36m151\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 50% with 151 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:04\u001b[0m, memory = \u001b[1;36m558.47\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:04, memory = 558.47 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m60\u001b[0m% with \u001b[1;36m132\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 60% with 132 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:06\u001b[0m, memory = \u001b[1;36m558.48\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:06, memory = 558.48 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m70\u001b[0m% with \u001b[1;36m132\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 70% with 132 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:06\u001b[0m, memory = \u001b[1;36m558.48\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:06, memory = 558.48 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m80\u001b[0m% with \u001b[1;36m132\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 80% with 132 violations.                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:07\u001b[0m, memory = \u001b[1;36m558.48\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:07, memory = 558.48 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m90\u001b[0m% with \u001b[1;36m65\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 90% with 65 violations.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:10\u001b[0m, memory = \u001b[1;36m562.90\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:10, memory = 562.90 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Completing \u001b[1;36m100\u001b[0m% with \u001b[1;36m0\u001b[0m violations. \n" + ], + "text/html": [ + "
Completing 100% with 0 violations.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "elapsed time = \u001b[1;92m00:00:12\u001b[0m, memory = \u001b[1;36m562.90\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m. \n" + ], + "text/html": [ + "
elapsed time = 00:00:12, memory = 562.90 (MB).                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0199\u001b[0m\u001b[1m]\u001b[0m Number of violations = \u001b[1;36m0\u001b[0m. \n" + ], + "text/html": [ + "
[INFO DRT-0199]   Number of violations = 0.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0267\u001b[0m\u001b[1m]\u001b[0m cpu time = \u001b[1;92m00:00:19\u001b[0m, elapsed time = \u001b[1;92m00:00:12\u001b[0m, memory = \u001b[1;36m562.90\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m, peak = \u001b[1;36m576.51\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO DRT-0267] cpu time = 00:00:19, elapsed time = 00:00:12, memory = 562.90 (MB), peak = 576.51 (MB)             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length = \u001b[1;36m41977\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length = 41977 um.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER li1 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER li1 = 0 um.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met1 = \u001b[1;36m19046\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met1 = 19046 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met2 = \u001b[1;36m18286\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met2 = 18286 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met3 = \u001b[1;36m4340\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met3 = 4340 um.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met4 = \u001b[1;36m304\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met4 = 304 um.                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met5 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met5 = 0 um.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total number of vias = \u001b[1;36m12859\u001b[0m. \n" + ], + "text/html": [ + "
Total number of vias = 12859.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Up-via summary \u001b[1m(\u001b[0mtotal \u001b[1;36m12859\u001b[0m\u001b[1m)\u001b[0m: \n" + ], + "text/html": [ + "
Up-via summary (total 12859):                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "FR_MASTERSLICE \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
FR_MASTERSLICE        0                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "li1 \u001b[1;36m6379\u001b[0m \n" + ], + "text/html": [ + "
li1     6379                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met1 \u001b[1;36m6211\u001b[0m \n" + ], + "text/html": [ + "
met1     6211                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met2 \u001b[1;36m258\u001b[0m \n" + ], + "text/html": [ + "
met2      258                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met3 \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
met3       11                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met4 \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met4        0                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m12859\u001b[0m \n" + ], + "text/html": [ + "
12859                                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0198\u001b[0m\u001b[1m]\u001b[0m Complete detail routing. \n" + ], + "text/html": [ + "
[INFO DRT-0198] Complete detail routing.                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length = \u001b[1;36m41977\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length = 41977 um.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER li1 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER li1 = 0 um.                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met1 = \u001b[1;36m19046\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met1 = 19046 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met2 = \u001b[1;36m18286\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met2 = 18286 um.                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met3 = \u001b[1;36m4340\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met3 = 4340 um.                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met4 = \u001b[1;36m304\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met4 = 304 um.                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total wire length on LAYER met5 = \u001b[1;36m0\u001b[0m um. \n" + ], + "text/html": [ + "
Total wire length on LAYER met5 = 0 um.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Total number of vias = \u001b[1;36m12859\u001b[0m. \n" + ], + "text/html": [ + "
Total number of vias = 12859.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Up-via summary \u001b[1m(\u001b[0mtotal \u001b[1;36m12859\u001b[0m\u001b[1m)\u001b[0m: \n" + ], + "text/html": [ + "
Up-via summary (total 12859):                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "FR_MASTERSLICE \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
FR_MASTERSLICE        0                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "li1 \u001b[1;36m6379\u001b[0m \n" + ], + "text/html": [ + "
li1     6379                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met1 \u001b[1;36m6211\u001b[0m \n" + ], + "text/html": [ + "
met1     6211                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met2 \u001b[1;36m258\u001b[0m \n" + ], + "text/html": [ + "
met2      258                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met3 \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
met3       11                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "met4 \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
met4        0                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "------------------------ \n" + ], + "text/html": [ + "
------------------------                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m12859\u001b[0m \n" + ], + "text/html": [ + "
12859                                                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0267\u001b[0m\u001b[1m]\u001b[0m cpu time = \u001b[1;92m00:02:51\u001b[0m, elapsed time = \u001b[1;92m00:01:52\u001b[0m, memory = \u001b[1;36m562.90\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m, peak = \u001b[1;36m576.51\u001b[0m \u001b[1m(\u001b[0mMB\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO DRT-0267] cpu time = 00:02:51, elapsed time = 00:01:52, memory = 562.90 (MB), peak = 576.51 (MB)             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DRT-\u001b[1;36m0180\u001b[0m\u001b[1m]\u001b[0m Post processing. \n" + ], + "text/html": [ + "
[INFO DRT-0180] Post processing.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.odb'…         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.nl.v'…                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.pnl.v'…         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.def'…                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.sdc'…        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:39]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=784582;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=322523;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:39] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:39]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=347131;file:///tmp/openlane_klayout_tmp_ullql_px/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=815689;file:///tmp/openlane_klayout_tmp_ullql_px/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_ullql_px/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=283884;file:///tmp/openlane_klayout_tmp_ullql_px/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=418547;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=13699;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:39] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_ullql_px/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 153.33s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:41]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=418403;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=452599;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:41] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:41]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=903105;file:///tmp/openlane_klayout_tmp_nldf31n_/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=993283;file:///tmp/openlane_klayout_tmp_nldf31n_/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_nldf31n_/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=374765;file:///tmp/openlane_klayout_tmp_nldf31n_/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=555574;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=132418;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:41] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_nldf31n_/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 153.33s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 47 + } + ], + "source": [ + "# Detailed Routing\n", + "print(\"Running Detailed Routing (may take a few minutes)...\")\n", + "run_step(\"OpenROAD.DetailedRouting\")" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "-U_wJoMdeY0s", + "outputId": "6dcaa255-72e4-4a41-b188-ac24bc110889" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running Fill Insertion...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m───────────────────────────────────────────────── \u001b[0mFill Insertion\u001b[92m ──────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
───────────────────────────────────────────────── Fill Insertion ──────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:42]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.FillInsertion'\u001b[0m… \u001b]8;id=757829;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=870284;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:42] VERBOSE  Running 'OpenROAD.FillInsertion'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:42]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=588434;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=287530;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=226980;file:///content/openlane_run/28-openroad-fillinsertion/openroad-fillinsertion.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=44689;file:///content/openlane_run/28-openroad-fillinsertion/openroad-fillinsertion.log\u001b\\\u001b[1;36m28\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=226980;file:///content/openlane_run/28-openroad-fillinsertion/openroad-fillinsertion.log\u001b\\\u001b[95m-openroad-fillinsertion/openroad-fillinsertion.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:42] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/28-openroad-fillinsertion/openroad-fillinsertion.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading OpenROAD database at \u001b[32m'/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Reading OpenROAD database at '/content/openlane_run/27-openroad-detailedrouting/tapeout_vedic_mac_16.odb'…         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading library file at \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'\u001b[0m… \n" + ], + "text/html": [ + "
Reading library file at '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib'…    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading design constraints file at \u001b[32m'/content/openlane_ipynb/openlane/scripts/base.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Reading design constraints file at '/content/openlane_ipynb/openlane/scripts/base.sdc'…                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Using clock clk… \n" + ], + "text/html": [ + "
[INFO] Using clock clk…                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting output delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting output delay to: 2                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting input delay to: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting input delay to: 2                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting load to: \u001b[1;36m0.033442\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting load to: 0.033442                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock uncertainty to: \u001b[1;36m0.25\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock uncertainty to: 0.25                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting clock transition to: \u001b[1;36m0.1499999999999999944488848768742172978818416595458984375\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting clock transition to: 0.1499999999999999944488848768742172978818416595458984375                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting timing derate to: \u001b[1;36m5\u001b[0m% \n" + ], + "text/html": [ + "
[INFO] Setting timing derate to: 5%                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "sky130_ef_sc_hd__decap_12 sky130_fd_sc_hd__decap_8 sky130_fd_sc_hd__decap_6 sky130_fd_sc_hd__decap_4 \n", + "sky130_fd_sc_hd__decap_3 sky130_fd_sc_hd__fill* \n" + ], + "text/html": [ + "
sky130_ef_sc_hd__decap_12 sky130_fd_sc_hd__decap_8 sky130_fd_sc_hd__decap_6 sky130_fd_sc_hd__decap_4               \n",
+              "sky130_fd_sc_hd__decap_3 sky130_fd_sc_hd__fill*                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO DPL-\u001b[1;36m0001\u001b[0m\u001b[1m]\u001b[0m Placed \u001b[1;36m2193\u001b[0m filler instances. \n" + ], + "text/html": [ + "
[INFO DPL-0001] Placed 2193 filler instances.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Setting global connections for newly added cells… \n" + ], + "text/html": [ + "
Setting global connections for newly added cells…                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Setting global connections\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Setting global connections...                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing OpenROAD database to \u001b[32m'/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.odb'\u001b[0m… \n" + ], + "text/html": [ + "
Writing OpenROAD database to '/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.odb'…           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing netlist to \u001b[32m'/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.nl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing netlist to '/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.nl.v'…                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing powered netlist to \u001b[32m'/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.pnl.v'\u001b[0m… \n" + ], + "text/html": [ + "
Writing powered netlist to '/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.pnl.v'…           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing layout to \u001b[32m'/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.def'\u001b[0m… \n" + ], + "text/html": [ + "
Writing layout to '/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.def'…                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Writing timing constraints to \u001b[32m'/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.sdc'\u001b[0m… \n" + ], + "text/html": [ + "
Writing timing constraints to '/content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.sdc'…          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:44]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=855984;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=916225;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:44] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:44]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=126569;file:///tmp/openlane_klayout_tmp_745uxn_7/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=841503;file:///tmp/openlane_klayout_tmp_745uxn_7/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_745uxn_7/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=911713;file:///tmp/openlane_klayout_tmp_745uxn_7/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=470069;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=513592;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:44] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_745uxn_7/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.02s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:45]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=934694;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=593109;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:45] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:45]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=61023;file:///tmp/openlane_klayout_tmp_nau27ng9/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=99942;file:///tmp/openlane_klayout_tmp_nau27ng9/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_nau27ng9/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=265347;file:///tmp/openlane_klayout_tmp_nau27ng9/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=371281;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=56893;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:45] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_nau27ng9/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 1.02s\n#### Views updated:\n* Verilog Netlist\n* Powered Verilog Netlist\n* Design Exchange Format\n* OpenDB Database\n* Design Constraints\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 48 + } + ], + "source": [ + "# Fill Insertion\n", + "print(\"Running Fill Insertion...\")\n", + "run_step(\"OpenROAD.FillInsertion\")" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 500 + }, + "id": "opHgNLDJeY0s", + "outputId": "61adbc6b-f30b-490f-bb23-ff6dde6432a8" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running RC Extraction...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m─────────────────────────────────── \u001b[0mParasitic Resistance/Capacitance Extraction\u001b[92m ───────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
─────────────────────────────────── Parasitic Resistance/Capacitance Extraction ───────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:46]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.RCX'\u001b[0m… \u001b]8;id=560253;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=222038;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:46] VERBOSE  Running 'OpenROAD.RCX'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:46]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Running RCX for corners matching nom_* \u001b]8;id=711474;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=705646;file:///content/openlane_ipynb/openlane/steps/openroad.py#1748\u001b\\\u001b[2m1748\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[1m(\u001b[0m\u001b[35m/content/openlane_run/29-openroad-rcx/nom/\u001b[0m\u001b[95mrcx.log\u001b[0m\u001b[1m)\u001b[0m… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:46] INFO     Running RCX for corners matching nom_*                                         openroad.py:1748\n",
+              "                    (/content/openlane_run/29-openroad-rcx/nom/rcx.log)                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:46]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Running RCX for corners matching min_* \u001b]8;id=482045;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=167532;file:///content/openlane_ipynb/openlane/steps/openroad.py#1748\u001b\\\u001b[2m1748\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[1m(\u001b[0m\u001b[35m/content/openlane_run/29-openroad-rcx/min/\u001b[0m\u001b[95mrcx.log\u001b[0m\u001b[1m)\u001b[0m… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:46] INFO     Running RCX for corners matching min_*                                         openroad.py:1748\n",
+              "                    (/content/openlane_run/29-openroad-rcx/min/rcx.log)                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:46]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=983050;file:///content/openlane_run/29-openroad-rcx/nom/rcx.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=753639;file:///content/openlane_run/29-openroad-rcx/nom/rcx.log\u001b\\\u001b[1;36m29\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=983050;file:///content/openlane_run/29-openroad-rcx/nom/rcx.log\u001b\\\u001b[95m-openroad-rcx/nom/rcx.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=570070;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=539048;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:46] VERBOSE  Logging subprocess to openlane_run/29-openroad-rcx/nom/rcx.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:46]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=466092;file:///content/openlane_run/29-openroad-rcx/min/rcx.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=620296;file:///content/openlane_run/29-openroad-rcx/min/rcx.log\u001b\\\u001b[1;36m29\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=466092;file:///content/openlane_run/29-openroad-rcx/min/rcx.log\u001b\\\u001b[95m-openroad-rcx/min/rcx.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=995244;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=392681;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:46] VERBOSE  Logging subprocess to openlane_run/29-openroad-rcx/min/rcx.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:48]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished RCX for corners matching nom_*. \u001b]8;id=59842;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=501770;file:///content/openlane_ipynb/openlane/steps/openroad.py#1757\u001b\\\u001b[2m1757\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:48] INFO     Finished RCX for corners matching nom_*.                                       openroad.py:1757\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:48]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Running RCX for corners matching max_* \u001b]8;id=899568;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=284201;file:///content/openlane_ipynb/openlane/steps/openroad.py#1748\u001b\\\u001b[2m1748\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[1m(\u001b[0m\u001b[35m/content/openlane_run/29-openroad-rcx/max/\u001b[0m\u001b[95mrcx.log\u001b[0m\u001b[1m)\u001b[0m… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:48] INFO     Running RCX for corners matching max_*                                         openroad.py:1748\n",
+              "                    (/content/openlane_run/29-openroad-rcx/max/rcx.log)                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:48]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=752110;file:///content/openlane_run/29-openroad-rcx/max/rcx.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=136803;file:///content/openlane_run/29-openroad-rcx/max/rcx.log\u001b\\\u001b[1;36m29\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=752110;file:///content/openlane_run/29-openroad-rcx/max/rcx.log\u001b\\\u001b[95m-openroad-rcx/max/rcx.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=682348;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=198738;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:48] VERBOSE  Logging subprocess to openlane_run/29-openroad-rcx/max/rcx.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:48]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished RCX for corners matching min_*. \u001b]8;id=526260;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=970852;file:///content/openlane_ipynb/openlane/steps/openroad.py#1757\u001b\\\u001b[2m1757\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:48] INFO     Finished RCX for corners matching min_*.                                       openroad.py:1757\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:49]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished RCX for corners matching max_*. \u001b]8;id=576744;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=782565;file:///content/openlane_ipynb/openlane/steps/openroad.py#1757\u001b\\\u001b[2m1757\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:49] INFO     Finished RCX for corners matching max_*.                                       openroad.py:1757\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 3.08s\n#### Views updated:\n* Standard Parasitics Extraction Format\n" + }, + "metadata": {}, + "execution_count": 49 + } + ], + "source": [ + "# RC Extraction\n", + "print(\"Running RC Extraction...\")\n", + "run_step(\"OpenROAD.RCX\", show=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "8Ah5AeLseY0t", + "outputId": "dddb0df9-54cb-4590-f1e1-d7df3d51bc02" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running STA...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────── \u001b[0mStatic Timing Analysis \u001b[1m(\u001b[0mPost-PnR\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────── Static Timing Analysis (Post-PnR) ────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:49]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'OpenROAD.STAPostPNR'\u001b[0m… \u001b]8;id=203346;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=256506;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:49] VERBOSE  Running 'OpenROAD.STAPostPNR'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:49]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the nom_tt_025C_1v80 timing corner… \u001b]8;id=408733;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=934028;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:49] INFO     Starting STA for the nom_tt_025C_1v80 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:49]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the nom_ss_100C_1v60 timing corner… \u001b]8;id=620046;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=670464;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:49] INFO     Starting STA for the nom_ss_100C_1v60 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:49]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=106257;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=193016;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=702316;file:///content/openlane_run/30-openroad-stapostpnr/nom_tt_025C_1v80/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=18416;file:///content/openlane_run/30-openroad-stapostpnr/nom_tt_025C_1v80/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=702316;file:///content/openlane_run/30-openroad-stapostpnr/nom_tt_025C_1v80/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/nom_tt_025C_1v80/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:49] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/nom_tt_025C_1v80/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:49]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=475658;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=300374;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=408268;file:///content/openlane_run/30-openroad-stapostpnr/nom_ss_100C_1v60/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=708581;file:///content/openlane_run/30-openroad-stapostpnr/nom_ss_100C_1v60/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=408268;file:///content/openlane_run/30-openroad-stapostpnr/nom_ss_100C_1v60/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/nom_ss_100C_1v60/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:49] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/nom_ss_100C_1v60/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:54]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the nom_ss_100C_1v60 timing corner. \u001b]8;id=43839;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=267586;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:54] INFO     Finished STA for the nom_ss_100C_1v60 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:54]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=52108;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=693370;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=296574;file:///content/openlane_run/30-openroad-stapostpnr/nom_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=953717;file:///content/openlane_run/30-openroad-stapostpnr/nom_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=296574;file:///content/openlane_run/30-openroad-stapostpnr/nom_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/nom_ss_100C_1v60/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:54] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/nom_ss_100C_1v60/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:54]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the nom_tt_025C_1v80 timing corner. \u001b]8;id=397948;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=978988;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:54] INFO     Finished STA for the nom_tt_025C_1v80 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:54]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=446527;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=289209;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=260442;file:///content/openlane_run/30-openroad-stapostpnr/nom_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=110010;file:///content/openlane_run/30-openroad-stapostpnr/nom_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=260442;file:///content/openlane_run/30-openroad-stapostpnr/nom_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/nom_tt_025C_1v80/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:54] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/nom_tt_025C_1v80/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:56]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the nom_ff_n40C_1v95 timing corner… \u001b]8;id=128784;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=873929;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:56] INFO     Starting STA for the nom_ff_n40C_1v95 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:56]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=605589;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=123958;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=828976;file:///content/openlane_run/30-openroad-stapostpnr/nom_ff_n40C_1v95/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=649389;file:///content/openlane_run/30-openroad-stapostpnr/nom_ff_n40C_1v95/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=828976;file:///content/openlane_run/30-openroad-stapostpnr/nom_ff_n40C_1v95/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/nom_ff_n40C_1v95/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:56] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/nom_ff_n40C_1v95/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:56]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the min_tt_025C_1v80 timing corner… \u001b]8;id=380497;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=298775;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:03:56] INFO     Starting STA for the min_tt_025C_1v80 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:03:56]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=871496;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=942745;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=784947;file:///content/openlane_run/30-openroad-stapostpnr/min_tt_025C_1v80/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=395417;file:///content/openlane_run/30-openroad-stapostpnr/min_tt_025C_1v80/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=784947;file:///content/openlane_run/30-openroad-stapostpnr/min_tt_025C_1v80/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/min_tt_025C_1v80/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:03:56] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/min_tt_025C_1v80/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:00]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the min_tt_025C_1v80 timing corner. \u001b]8;id=878042;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=917889;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:00] INFO     Finished STA for the min_tt_025C_1v80 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:00]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=945184;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=685713;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=862272;file:///content/openlane_run/30-openroad-stapostpnr/min_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=376321;file:///content/openlane_run/30-openroad-stapostpnr/min_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=862272;file:///content/openlane_run/30-openroad-stapostpnr/min_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/min_tt_025C_1v80/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:00] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/min_tt_025C_1v80/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:01]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the min_ss_100C_1v60 timing corner… \u001b]8;id=631571;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=331521;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:01] INFO     Starting STA for the min_ss_100C_1v60 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:01]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=745452;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=639392;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=500929;file:///content/openlane_run/30-openroad-stapostpnr/min_ss_100C_1v60/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=6892;file:///content/openlane_run/30-openroad-stapostpnr/min_ss_100C_1v60/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=500929;file:///content/openlane_run/30-openroad-stapostpnr/min_ss_100C_1v60/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/min_ss_100C_1v60/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:01] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/min_ss_100C_1v60/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:01]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the nom_ff_n40C_1v95 timing corner. \u001b]8;id=278201;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=630713;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:01] INFO     Finished STA for the nom_ff_n40C_1v95 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:01]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=489133;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=243648;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=950759;file:///content/openlane_run/30-openroad-stapostpnr/nom_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=519239;file:///content/openlane_run/30-openroad-stapostpnr/nom_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=950759;file:///content/openlane_run/30-openroad-stapostpnr/nom_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/nom_ff_n40C_1v95/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:01] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/nom_ff_n40C_1v95/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:02]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the min_ff_n40C_1v95 timing corner… \u001b]8;id=256992;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=471216;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:02] INFO     Starting STA for the min_ff_n40C_1v95 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:02]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=737374;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=560070;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=48514;file:///content/openlane_run/30-openroad-stapostpnr/min_ff_n40C_1v95/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=734171;file:///content/openlane_run/30-openroad-stapostpnr/min_ff_n40C_1v95/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=48514;file:///content/openlane_run/30-openroad-stapostpnr/min_ff_n40C_1v95/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/min_ff_n40C_1v95/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:02] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/min_ff_n40C_1v95/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:05]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the min_ss_100C_1v60 timing corner. \u001b]8;id=271249;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=734008;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:05] INFO     Finished STA for the min_ss_100C_1v60 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:05]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=894731;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=153901;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=520459;file:///content/openlane_run/30-openroad-stapostpnr/min_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=721557;file:///content/openlane_run/30-openroad-stapostpnr/min_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=520459;file:///content/openlane_run/30-openroad-stapostpnr/min_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/min_ss_100C_1v60/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:05] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/min_ss_100C_1v60/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:07]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the max_tt_025C_1v80 timing corner… \u001b]8;id=536241;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=896209;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:07] INFO     Starting STA for the max_tt_025C_1v80 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:07]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=302952;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=207457;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=817412;file:///content/openlane_run/30-openroad-stapostpnr/max_tt_025C_1v80/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=821108;file:///content/openlane_run/30-openroad-stapostpnr/max_tt_025C_1v80/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=817412;file:///content/openlane_run/30-openroad-stapostpnr/max_tt_025C_1v80/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/max_tt_025C_1v80/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:07] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/max_tt_025C_1v80/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:09]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the min_ff_n40C_1v95 timing corner. \u001b]8;id=561281;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=880913;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:09] INFO     Finished STA for the min_ff_n40C_1v95 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:09]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=367146;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=669629;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=964030;file:///content/openlane_run/30-openroad-stapostpnr/min_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=321332;file:///content/openlane_run/30-openroad-stapostpnr/min_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=964030;file:///content/openlane_run/30-openroad-stapostpnr/min_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/min_ff_n40C_1v95/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:09] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/min_ff_n40C_1v95/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:10]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the max_ss_100C_1v60 timing corner… \u001b]8;id=853513;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=1788;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:10] INFO     Starting STA for the max_ss_100C_1v60 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:10]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=932370;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=234831;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=272555;file:///content/openlane_run/30-openroad-stapostpnr/max_ss_100C_1v60/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=311130;file:///content/openlane_run/30-openroad-stapostpnr/max_ss_100C_1v60/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=272555;file:///content/openlane_run/30-openroad-stapostpnr/max_ss_100C_1v60/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/max_ss_100C_1v60/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:10] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/max_ss_100C_1v60/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:12]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the max_tt_025C_1v80 timing corner. \u001b]8;id=537177;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=795848;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:12] INFO     Finished STA for the max_tt_025C_1v80 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:12]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=203409;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=88478;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=462232;file:///content/openlane_run/30-openroad-stapostpnr/max_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=637037;file:///content/openlane_run/30-openroad-stapostpnr/max_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=462232;file:///content/openlane_run/30-openroad-stapostpnr/max_tt_025C_1v80/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/max_tt_025C_1v80/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:12] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/max_tt_025C_1v80/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:13]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Starting STA for the max_ff_n40C_1v95 timing corner… \u001b]8;id=934966;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=451514;file:///content/openlane_ipynb/openlane/steps/openroad.py#561\u001b\\\u001b[2m561\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:13] INFO     Starting STA for the max_ff_n40C_1v95 timing corner…                            openroad.py:561\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:13]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=357925;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=173544;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=449309;file:///content/openlane_run/30-openroad-stapostpnr/max_ff_n40C_1v95/sta.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=138516;file:///content/openlane_run/30-openroad-stapostpnr/max_ff_n40C_1v95/sta.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=449309;file:///content/openlane_run/30-openroad-stapostpnr/max_ff_n40C_1v95/sta.log\u001b\\\u001b[95m-openroad-stapostpnr/max_ff_n40C_1v95/sta.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:13] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/max_ff_n40C_1v95/sta.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:14]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the max_ss_100C_1v60 timing corner. \u001b]8;id=945610;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=349489;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:14] INFO     Finished STA for the max_ss_100C_1v60 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:14]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=245311;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=865309;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=980943;file:///content/openlane_run/30-openroad-stapostpnr/max_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=161275;file:///content/openlane_run/30-openroad-stapostpnr/max_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=980943;file:///content/openlane_run/30-openroad-stapostpnr/max_ss_100C_1v60/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/max_ss_100C_1v60/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:14] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/max_ss_100C_1v60/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:17]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Finished STA for the max_ff_n40C_1v95 timing corner. \u001b]8;id=543558;file:///content/openlane_ipynb/openlane/steps/openroad.py\u001b\\\u001b[2mopenroad.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=991071;file:///content/openlane_ipynb/openlane/steps/openroad.py#576\u001b\\\u001b[2m576\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:17] INFO     Finished STA for the max_ff_n40C_1v95 timing corner.                            openroad.py:576\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:17]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=155556;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=155183;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=469038;file:///content/openlane_run/30-openroad-stapostpnr/max_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=437871;file:///content/openlane_run/30-openroad-stapostpnr/max_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[1;36m30\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=469038;file:///content/openlane_run/30-openroad-stapostpnr/max_ff_n40C_1v95/filter_unannotated.log\u001b\\\u001b[95m-openroad-stapostpnr/max_ff_n40C_1v95/filter_unannotated.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:17] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/30-openroad-stapostpnr/max_ff_n40C_1v95/filter_unannotated.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mof \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mof \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\n", + "┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mReg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mwhi…\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mReg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mwhich\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\n", + "┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mHold \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mto \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mHold \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mreg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSetup\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mto \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSet…\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mreg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mMax \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mMax \u001b[0m\u001b[1m \u001b[0m┃\n", + "┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mWorst\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mReg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mHold\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mVio \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mto \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mWorst\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mReg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSetup\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mVio \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mto \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mCap \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSlew \u001b[0m\u001b[1m \u001b[0m┃\n", + "┃\u001b[1m \u001b[0m\u001b[1mCorner/Group \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSlack\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mPaths\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mTNS \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mCount\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mreg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSlack\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mPat…\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mTNS \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mCou…\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mreg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mVio…\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mViol…\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━┩\n", + "│ Overall │ \u001b[32m0.15…\u001b[0m │ \u001b[32m0.15…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-14.…\u001b[0m │ N/A │ \u001b[31m-239…\u001b[0m │ \u001b[31m131\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m935\u001b[0m │\n", + "│ nom_tt_025C_1v80 │ \u001b[32m0.39…\u001b[0m │ \u001b[32m0.39…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-2.8…\u001b[0m │ N/A │ \u001b[31m-26.…\u001b[0m │ \u001b[31m16\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m33\u001b[0m │\n", + "│ nom_ss_100C_1v60 │ \u001b[32m0.86…\u001b[0m │ \u001b[32m1.02…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-14.…\u001b[0m │ N/A │ \u001b[31m-236…\u001b[0m │ \u001b[31m28\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m935\u001b[0m │\n", + "│ nom_ff_n40C_1v95 │ \u001b[32m0.15…\u001b[0m │ \u001b[32m0.15…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m1.27…\u001b[0m │ N/A │ \u001b[32m0.00…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │\n", + "│ min_tt_025C_1v80 │ \u001b[32m0.39…\u001b[0m │ \u001b[32m0.39…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-2.7…\u001b[0m │ N/A │ \u001b[31m-25.…\u001b[0m │ \u001b[31m15\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │\n", + "│ min_ss_100C_1v60 │ \u001b[32m0.86…\u001b[0m │ \u001b[32m1.01…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-14.…\u001b[0m │ N/A │ \u001b[31m-232…\u001b[0m │ \u001b[31m28\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m935\u001b[0m │\n", + "│ min_ff_n40C_1v95 │ \u001b[32m0.15…\u001b[0m │ \u001b[32m0.15…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m1.32…\u001b[0m │ N/A │ \u001b[32m0.00…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │\n", + "│ max_tt_025C_1v80 │ \u001b[32m0.39…\u001b[0m │ \u001b[32m0.39…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-2.9…\u001b[0m │ N/A │ \u001b[31m-27.…\u001b[0m │ \u001b[31m16\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m93\u001b[0m │\n", + "│ max_ss_100C_1v60 │ \u001b[32m0.85…\u001b[0m │ \u001b[32m1.03…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-14.…\u001b[0m │ N/A │ \u001b[31m-239…\u001b[0m │ \u001b[31m28\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m935\u001b[0m │\n", + "│ max_ff_n40C_1v95 │ \u001b[32m0.15…\u001b[0m │ \u001b[32m0.15…\u001b[0m │ \u001b[32m0.0…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m1.21…\u001b[0m │ N/A │ \u001b[32m0.00…\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │\n", + "└──────────────────────┴───────┴───────┴──────┴───────┴──────┴───────┴──────┴───────┴──────┴───────┴──────┴───────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┓\n",
+              "┃                                                  of                              of                 ┃\n",
+              "┃                              Reg                 whi…         Reg                which              ┃\n",
+              "┃                       Hold   to           Hold   reg   Setup  to           Set…  reg    Max   Max   ┃\n",
+              "┃                       Worst  Reg    Hold  Vio    to    Worst  Reg   Setup  Vio   to     Cap   Slew  ┃\n",
+              "┃ Corner/Group          Slack  Paths  TNS   Count  reg   Slack  Pat…  TNS    Cou…  reg    Vio…  Viol… ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━┩\n",
+              "│ Overall              │ 0.15…0.15…0.0…00-14.… │ N/A  │ -239…13100935   │\n",
+              "│ nom_tt_025C_1v80     │ 0.39…0.39…0.0…00-2.8… │ N/A  │ -26.…160033    │\n",
+              "│ nom_ss_100C_1v60     │ 0.86…1.02…0.0…00-14.… │ N/A  │ -236…2800935   │\n",
+              "│ nom_ff_n40C_1v95     │ 0.15…0.15…0.0…001.27… │ N/A  │ 0.00…0000     │\n",
+              "│ min_tt_025C_1v80     │ 0.39…0.39…0.0…00-2.7… │ N/A  │ -25.…15000     │\n",
+              "│ min_ss_100C_1v60     │ 0.86…1.01…0.0…00-14.… │ N/A  │ -232…2800935   │\n",
+              "│ min_ff_n40C_1v95     │ 0.15…0.15…0.0…001.32… │ N/A  │ 0.00…0000     │\n",
+              "│ max_tt_025C_1v80     │ 0.39…0.39…0.0…00-2.9… │ N/A  │ -27.…160093    │\n",
+              "│ max_ss_100C_1v60     │ 0.85…1.03…0.0…00-14.… │ N/A  │ -239…2800935   │\n",
+              "│ max_ff_n40C_1v95     │ 0.15…0.15…0.0…001.21… │ N/A  │ 0.00…0000     │\n",
+              "└──────────────────────┴───────┴───────┴──────┴───────┴──────┴───────┴──────┴───────┴──────┴───────┴──────┴───────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mHold \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mReg to \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mof which \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSetup \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mof which\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\n", + "┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mWorst \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mReg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mHold Vio\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mreg to \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mWorst \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mReg to \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSetup \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSetup Vio\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mreg to \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mMax Cap \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mMax Slew\u001b[0m\u001b[1m \u001b[0m┃\n", + "┃\u001b[1m \u001b[0m\u001b[1mCorner/Group \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSlack \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mPaths \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mHold TNS\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mCount \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mreg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mSlack \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mReg Paths\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mTNS \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mCount \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mreg \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mViolatio…\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mViolati…\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩\n", + "│ Overall │ \u001b[32m0.1553\u001b[0m │ \u001b[32m0.1553\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-14.6344\u001b[0m │ N/A │ \u001b[31m-239.46…\u001b[0m │ \u001b[31m131\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m935\u001b[0m │\n", + "│ nom_tt_025C_1v80 │ \u001b[32m0.3926\u001b[0m │ \u001b[32m0.3926\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-2.8559\u001b[0m │ N/A │ \u001b[31m-26.4863\u001b[0m │ \u001b[31m16\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m33\u001b[0m │\n", + "│ nom_ss_100C_1v60 │ \u001b[32m0.8612\u001b[0m │ \u001b[32m1.0238\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-14.4759\u001b[0m │ N/A │ \u001b[31m-236.02…\u001b[0m │ \u001b[31m28\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m935\u001b[0m │\n", + "│ nom_ff_n40C_1v95 │ \u001b[32m0.1571\u001b[0m │ \u001b[32m0.1571\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m1.2703\u001b[0m │ N/A │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │\n", + "│ min_tt_025C_1v80 │ \u001b[32m0.3912\u001b[0m │ \u001b[32m0.3912\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-2.7771\u001b[0m │ N/A │ \u001b[31m-25.3343\u001b[0m │ \u001b[31m15\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │\n", + "│ min_ss_100C_1v60 │ \u001b[32m0.8650\u001b[0m │ \u001b[32m1.0190\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-14.3444\u001b[0m │ N/A │ \u001b[31m-232.99…\u001b[0m │ \u001b[31m28\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m935\u001b[0m │\n", + "│ min_ff_n40C_1v95 │ \u001b[32m0.1553\u001b[0m │ \u001b[32m0.1553\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m1.3231\u001b[0m │ N/A │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │\n", + "│ max_tt_025C_1v80 │ \u001b[32m0.3946\u001b[0m │ \u001b[32m0.3946\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-2.9409\u001b[0m │ N/A │ \u001b[31m-27.7118\u001b[0m │ \u001b[31m16\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m93\u001b[0m │\n", + "│ max_ss_100C_1v60 │ \u001b[32m0.8523\u001b[0m │ \u001b[32m1.0304\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m-14.6344\u001b[0m │ N/A │ \u001b[31m-239.46…\u001b[0m │ \u001b[31m28\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[31m935\u001b[0m │\n", + "│ max_ff_n40C_1v95 │ \u001b[32m0.1592\u001b[0m │ \u001b[32m0.1592\u001b[0m │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m1.2112\u001b[0m │ N/A │ \u001b[32m0.0000\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │ \u001b[32m0\u001b[0m │\n", + "└──────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓\n",
+              "┃                       Hold      Reg to                        of which   Setup                                     of which                      ┃\n",
+              "┃                       Worst     Reg                 Hold Vio  reg to     Worst     Reg to     Setup     Setup Vio  reg to    Max Cap    Max Slew ┃\n",
+              "┃ Corner/Group          Slack     Paths     Hold TNS  Count     reg        Slack     Reg Paths  TNS       Count      reg       Violatio…  Violati… ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩\n",
+              "│ Overall              │ 0.15530.15530.000000-14.6344 │ N/A       │ -239.46…13100935      │\n",
+              "│ nom_tt_025C_1v80     │ 0.39260.39260.000000-2.8559  │ N/A       │ -26.4863160033       │\n",
+              "│ nom_ss_100C_1v60     │ 0.86121.02380.000000-14.4759 │ N/A       │ -236.02…2800935      │\n",
+              "│ nom_ff_n40C_1v95     │ 0.15710.15710.0000001.2703   │ N/A       │ 0.00000000        │\n",
+              "│ min_tt_025C_1v80     │ 0.39120.39120.000000-2.7771  │ N/A       │ -25.334315000        │\n",
+              "│ min_ss_100C_1v60     │ 0.86501.01900.000000-14.3444 │ N/A       │ -232.99…2800935      │\n",
+              "│ min_ff_n40C_1v95     │ 0.15530.15530.0000001.3231   │ N/A       │ 0.00000000        │\n",
+              "│ max_tt_025C_1v80     │ 0.39460.39460.000000-2.9409  │ N/A       │ -27.7118160093       │\n",
+              "│ max_ss_100C_1v60     │ 0.85231.03040.000000-14.6344 │ N/A       │ -239.46…2800935      │\n",
+              "│ max_ff_n40C_1v95     │ 0.15920.15920.0000001.2112   │ N/A       │ 0.00000000        │\n",
+              "└──────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 28.47s\n#### Views updated:\n* Standard Delay Format\n* LIB Timing Library Format\n" + }, + "metadata": {}, + "execution_count": 50 + } + ], + "source": [ + "# Static Timing Analysis\n", + "print(\"Running STA...\")\n", + "run_step(\"OpenROAD.STAPostPNR\", show=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "Hl0SvBuseY0t", + "outputId": "b2bed872-5718-4b0e-8f91-15edaf8652d6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Generating GDSII...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m─────────────────────────────────────────── \u001b[0mGDSII Stream Out \u001b[1m(\u001b[0mKLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
─────────────────────────────────────────── GDSII Stream Out (KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:18]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.StreamOut'\u001b[0m… \u001b]8;id=826844;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=105912;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:18] VERBOSE  Running 'KLayout.StreamOut'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:18]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=73934;file:///content/openlane_run/31-klayout-streamout/klayout-streamout.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=307129;file:///content/openlane_run/31-klayout-streamout/klayout-streamout.log\u001b\\\u001b[1;36m31\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=73934;file:///content/openlane_run/31-klayout-streamout/klayout-streamout.log\u001b\\\u001b[95m-klayout-streamout/klayout-streamout.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=377362;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=377271;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:18] VERBOSE  Logging subprocess to openlane_run/31-klayout-streamout/klayout-streamout.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Clearing cells… \n" + ], + "text/html": [ + "
[INFO] Clearing cells…                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Merging GDS files… \n" + ], + "text/html": [ + "
[INFO] Merging GDS files…                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Copying top level cell \u001b[32m'tapeout_vedic_mac_16'\u001b[0m… \n" + ], + "text/html": [ + "
[INFO] Copying top level cell 'tapeout_vedic_mac_16'…                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Checking for missing GDS… \n" + ], + "text/html": [ + "
[INFO] Checking for missing GDS…                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m All LEF cells have matching GDS cells. \n" + ], + "text/html": [ + "
[INFO] All LEF cells have matching GDS cells.                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Writing out GDS \u001b[32m'/content/openlane_run/31-klayout-streamout/tapeout_vedic_mac_16.klayout.gds'\u001b[0m… \n" + ], + "text/html": [ + "
[INFO] Writing out GDS '/content/openlane_run/31-klayout-streamout/tapeout_vedic_mac_16.klayout.gds'…              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Done. \n" + ], + "text/html": [ + "
[INFO] Done.                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:19]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=806106;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=182583;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:19] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:19]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=330032;file:///tmp/openlane_klayout_tmp_l7ktzp6t/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=109796;file:///tmp/openlane_klayout_tmp_l7ktzp6t/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_l7ktzp6t/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=750733;file:///tmp/openlane_klayout_tmp_l7ktzp6t/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=771792;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=672213;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:19] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_l7ktzp6t/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 0.82s\n#### Views updated:\n* GDSII Stream\n* GDSII Stream (KLayout)\n#### Preview:\n" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m──────────────────────────────────────────── \u001b[0mRender Image \u001b[1m(\u001b[0mw/ KLayout\u001b[1m)\u001b[0m\u001b[92m ────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
──────────────────────────────────────────── Render Image (w/ KLayout) ────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:20]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'KLayout.Render'\u001b[0m… \u001b]8;id=233630;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=885019;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:20] VERBOSE  Running 'KLayout.Render'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:20]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=753128;file:///tmp/openlane_klayout_tmp_8ss3ekck/klayout-render.log\u001b\\\u001b[95m..\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=216418;file:///tmp/openlane_klayout_tmp_8ss3ekck/klayout-render.log\u001b\\\u001b[35m/tmp/openlane_klayout_tmp_8ss3ekck/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=888666;file:///tmp/openlane_klayout_tmp_8ss3ekck/klayout-render.log\u001b\\\u001b[95mklayout-render.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=353548;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=848814;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:20] VERBOSE  Logging subprocess to ../tmp/openlane_klayout_tmp_8ss3ekck/klayout-render.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 0.82s\n#### Views updated:\n* GDSII Stream\n* GDSII Stream (KLayout)\n#### Preview:\n" + }, + "metadata": {}, + "execution_count": 51 + } + ], + "source": [ + "# GDSII Stream-out\n", + "print(\"Generating GDSII...\")\n", + "run_step(\"KLayout.StreamOut\")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "AQBMtdGGeY0t", + "outputId": "18581334-2373-44fe-c8af-8d32cde3330b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running DRC...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m─────────────────────────────────────────────── \u001b[0mDesign Rule Checks\u001b[92m ────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
─────────────────────────────────────────────── Design Rule Checks ────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:22]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'Magic.DRC'\u001b[0m… \u001b]8;id=666194;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=990873;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:22] VERBOSE  Running 'Magic.DRC'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:22]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=448740;file:///content/openlane_run/32-magic-drc/magic-drc.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=965125;file:///content/openlane_run/32-magic-drc/magic-drc.log\u001b\\\u001b[1;36m32\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=448740;file:///content/openlane_run/32-magic-drc/magic-drc.log\u001b\\\u001b[95m-magic-drc/magic-drc.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=685607;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=821918;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:22] VERBOSE  Logging subprocess to openlane_run/32-magic-drc/magic-drc.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[35m/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/\u001b[0m\u001b[95mbash\u001b[0m: warning: setlocale: LC_ALL: cannot change locale \n", + "\u001b[1m(\u001b[0men_US.UTF-\u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash: warning: setlocale: LC_ALL: cannot change locale \n",
+              "(en_US.UTF-8)                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Magic \u001b[1;36m8.3\u001b[0m revision \u001b[1;36m483\u001b[0m - Compiled on Sun Jun \u001b[1;36m2\u001b[0m \u001b[1;92m18:57:41\u001b[0m UTC \u001b[1;36m2024\u001b[0m. \n" + ], + "text/html": [ + "
Magic 8.3 revision 483 - Compiled on Sun Jun  2 18:57:41 UTC 2024.                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Starting magic under Tcl interpreter \n" + ], + "text/html": [ + "
Starting magic under Tcl interpreter                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using the terminal as the console. \n" + ], + "text/html": [ + "
Using the terminal as the console.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using NULL graphics device. \n" + ], + "text/html": [ + "
Using NULL graphics device.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Processing system .magicrc file \n" + ], + "text/html": [ + "
Processing system .magicrc file                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Sourcing design .magicrc for technology sky130A \u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Sourcing design .magicrc for technology sky130A ...                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m2\u001b[0m Magic internal units = \u001b[1;36m1\u001b[0m Lambda \n" + ], + "text/html": [ + "
2 Magic internal units = 1 Lambda                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Input style \u001b[1;35msky130\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[33mscaleFactor\u001b[0m=\u001b[1;36m2\u001b[0m, \u001b[33mmultiplier\u001b[0m=\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Input style sky130(): scaleFactor=2, multiplier=2                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "The following types are not handled by extraction and will be treated as non-electrical types: \n" + ], + "text/html": [ + "
The following types are not handled by extraction and will be treated as non-electrical types:                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ubm \n" + ], + "text/html": [ + "
ubm                                                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Scaled tech values by \u001b[1;36m2\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m1\u001b[0m to match internal grid scaling \n" + ], + "text/html": [ + "
Scaled tech values by 2 / 1 to match internal grid scaling                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Loading sky130A Device Generator Menu \u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Loading sky130A Device Generator Menu ...                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Loading \u001b[32m\"/content/openlane_ipynb/openlane/scripts/magic/wrapper.tcl\"\u001b[0m from command line. \n" + ], + "text/html": [ + "
Loading \"/content/openlane_ipynb/openlane/scripts/magic/wrapper.tcl\" from command line.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Warning: Calma reading is not undoable! I hope that's OK. \n" + ], + "text/html": [ + "
Warning: Calma reading is not undoable!  I hope that's OK.                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Library written using GDS-II Release \u001b[1;36m6.0\u001b[0m \n" + ], + "text/html": [ + "
Library written using GDS-II Release 6.0                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Library name: LIB \n" + ], + "text/html": [ + "
Library name: LIB                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_M1M2_PR_MR\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_M1M2_PR_MR\".                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_M3M4_PR\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_M3M4_PR\".                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_M1M2_PR\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_M1M2_PR\".                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_L1M1_PR_MR\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_L1M1_PR_MR\".                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_M2M3_PR\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_M2M3_PR\".                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_via2_3_1600_480_1_5_320_320\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_via2_3_1600_480_1_5_320_320\".                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_via3_4_1600_480_1_4_400_400\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_via3_4_1600_480_1_4_400_400\".                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_via4_5_1600_480_1_4_400_400\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_via4_5_1600_480_1_4_400_400\".                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"VIA_via5_6_1600_1600_1_1_1600_1600\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"VIA_via5_6_1600_1600_1_1_1600_1600\".                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__clkinv_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__clkinv_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__bufinv_16\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__bufinv_16\".                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__inv_4\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__inv_4\".                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__clkbuf_16\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__clkbuf_16\".                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__dfrtp_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__dfrtp_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a31oi_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a31oi_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o32a_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o32a_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__and4b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__and4b_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a2111o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a2111o_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o311ai_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o311ai_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__or4_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__or4_2\".                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a311oi_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a311oi_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nor3b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nor3b_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__or4b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__or4b_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a41o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a41o_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a311o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a311o_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o2111ai_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o2111ai_2\".                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nand3b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nand3b_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a221o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a221o_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o211a_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o211a_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a211oi_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a211oi_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o211ai_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o211ai_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nor3_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nor3_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a211o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a211o_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o221a_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o221a_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o21ba_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o21ba_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nand2b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nand2b_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a21bo_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a21bo_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o31a_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o31a_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o31ai_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o31ai_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o311a_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o311a_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__or3_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__or3_2\".                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o21ai_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o21ai_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a31o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a31o_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__and2_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__and2_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__and2b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__and2b_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__xor2_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__xor2_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__mux2_1\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__mux2_1\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o21a_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o21a_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o21bai_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o21bai_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a21oi_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a21oi_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__o2111a_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__o2111a_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nand4_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nand4_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a22oi_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a22oi_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nor2_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nor2_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a21boi_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a21boi_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__or3b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__or3b_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a32o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a32o_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__and3_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__and3_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__or4bb_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__or4bb_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a2bb2o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a2bb2o_2\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a21o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a21o_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nand3_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nand3_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__or2_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__or2_2\".                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__a22o_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__a22o_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__and4_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__and4_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nor4b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nor4b_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__and3b_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__and3b_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__xnor2_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__xnor2_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__nand2_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__nand2_2\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__inv_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__inv_2\".                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__tapvpwrvgnd_1\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__tapvpwrvgnd_1\".                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__decap_6\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__decap_6\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__fill_2\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__fill_2\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__decap_4\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__decap_4\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__fill_1\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__fill_1\".                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__decap_8\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__decap_8\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_ef_sc_hd__decap_12\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_ef_sc_hd__decap_12\".                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"sky130_fd_sc_hd__decap_3\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"sky130_fd_sc_hd__decap_3\".                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading \u001b[32m\"tapeout_vedic_mac_16\"\u001b[0m. \n" + ], + "text/html": [ + "
Reading \"tapeout_vedic_mac_16\".                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m5000\u001b[0m uses \n" + ], + "text/html": [ + "
5000 uses                                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m10000\u001b[0m uses \n" + ], + "text/html": [ + "
10000 uses                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m15000\u001b[0m uses \n" + ], + "text/html": [ + "
15000 uses                                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Loading tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
[INFO] Loading tapeout_vedic_mac_16                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "DRC style is now \u001b[32m\"drc\u001b[0m\u001b[32m(\u001b[0m\u001b[32mfull\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\"\u001b[0m \n" + ], + "text/html": [ + "
DRC style is now \"drc(full)\"                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Loading DRC CIF style. \n" + ], + "text/html": [ + "
Loading DRC CIF style.                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No errors found. \n" + ], + "text/html": [ + "
No errors found.                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m COUNT: \u001b[1;36m0\u001b[0m \n" + ], + "text/html": [ + "
[INFO] COUNT: 0                                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Should be divided by \u001b[1;36m3\u001b[0m or \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Should be divided by 3 or 4                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m DRC Checking DONE \u001b[1m(\u001b[0m\u001b[35m/content/openlane_run/32-magic-drc/reports/\u001b[0m\u001b[95mdrc_violations.magic.rpt\u001b[0m\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO] DRC Checking DONE (/content/openlane_run/32-magic-drc/reports/drc_violations.magic.rpt)                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Saving mag view with DRC errors \u001b[1m(\u001b[0m\u001b[35m/content/openlane_run/32-magic-drc/views/\u001b[0m\u001b[95mtapeout_vedic_mac_16.drc.mag\u001b[0m\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
[INFO] Saving mag view with DRC errors (/content/openlane_run/32-magic-drc/views/tapeout_vedic_mac_16.drc.mag)     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m[\u001b[0mINFO\u001b[1m]\u001b[0m Saved \n" + ], + "text/html": [ + "
[INFO] Saved                                                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Running LVS...\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m───────────────────────────────────────────── \u001b[0mSPICE Model Extraction\u001b[92m ──────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
───────────────────────────────────────────── SPICE Model Extraction ──────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:32]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'Magic.SpiceExtraction'\u001b[0m… \u001b]8;id=96699;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=649955;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:32] VERBOSE  Running 'Magic.SpiceExtraction'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:32]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=276747;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=391027;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b]8;id=569608;file:///content/openlane_run/33-magic-spiceextraction/magic-spiceextraction.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=267772;file:///content/openlane_run/33-magic-spiceextraction/magic-spiceextraction.log\u001b\\\u001b[1;36m33\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=569608;file:///content/openlane_run/33-magic-spiceextraction/magic-spiceextraction.log\u001b\\\u001b[95m-magic-spiceextraction/magic-spiceextraction.log\u001b[0m\u001b]8;;\u001b\\… \u001b[2m \u001b[0m\n" + ], + "text/html": [ + "
[10:04:32] VERBOSE  Logging subprocess to                                                              step.py:1268\n",
+              "                    openlane_run/33-magic-spiceextraction/magic-spiceextraction.log            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[35m/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/\u001b[0m\u001b[95mbash\u001b[0m: warning: setlocale: LC_ALL: cannot change locale \n", + "\u001b[1m(\u001b[0men_US.UTF-\u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash: warning: setlocale: LC_ALL: cannot change locale \n",
+              "(en_US.UTF-8)                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Magic \u001b[1;36m8.3\u001b[0m revision \u001b[1;36m483\u001b[0m - Compiled on Sun Jun \u001b[1;36m2\u001b[0m \u001b[1;92m18:57:41\u001b[0m UTC \u001b[1;36m2024\u001b[0m. \n" + ], + "text/html": [ + "
Magic 8.3 revision 483 - Compiled on Sun Jun  2 18:57:41 UTC 2024.                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Starting magic under Tcl interpreter \n" + ], + "text/html": [ + "
Starting magic under Tcl interpreter                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using the terminal as the console. \n" + ], + "text/html": [ + "
Using the terminal as the console.                                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using NULL graphics device. \n" + ], + "text/html": [ + "
Using NULL graphics device.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Processing system .magicrc file \n" + ], + "text/html": [ + "
Processing system .magicrc file                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Sourcing design .magicrc for technology sky130A \u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Sourcing design .magicrc for technology sky130A ...                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1;36m2\u001b[0m Magic internal units = \u001b[1;36m1\u001b[0m Lambda \n" + ], + "text/html": [ + "
2 Magic internal units = 1 Lambda                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Input style \u001b[1;35msky130\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m: \u001b[33mscaleFactor\u001b[0m=\u001b[1;36m2\u001b[0m, \u001b[33mmultiplier\u001b[0m=\u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Input style sky130(): scaleFactor=2, multiplier=2                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "The following types are not handled by extraction and will be treated as non-electrical types: \n" + ], + "text/html": [ + "
The following types are not handled by extraction and will be treated as non-electrical types:                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "ubm \n" + ], + "text/html": [ + "
ubm                                                                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Scaled tech values by \u001b[1;36m2\u001b[0m \u001b[35m/\u001b[0m \u001b[1;36m1\u001b[0m to match internal grid scaling \n" + ], + "text/html": [ + "
Scaled tech values by 2 / 1 to match internal grid scaling                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Loading sky130A Device Generator Menu \u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Loading sky130A Device Generator Menu ...                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Loading \u001b[32m\"/content/openlane_ipynb/openlane/scripts/magic/wrapper.tcl\"\u001b[0m from command line. \n" + ], + "text/html": [ + "
Loading \"/content/openlane_ipynb/openlane/scripts/magic/wrapper.tcl\" from command line.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "> lef read \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/techlef/\u001b[0m\u001b[95msky130_fd_sc_hd__nom.tlef\u001b[0m \n" + ], + "text/html": [ + "
> lef read /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/techlef/sky130_fd_sc_hd__nom.tlef                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading LEF data from file \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/techlef/\u001b[0m\u001b[95msky130_fd_sc_hd__nom.tlef.\u001b[0m \n" + ], + "text/html": [ + "
Reading LEF data from file /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/techlef/sky130_fd_sc_hd__nom.tlef.       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "This action cannot be undone. \n" + ], + "text/html": [ + "
This action cannot be undone.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m78\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNAMODEL\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 78 (Message): Unknown keyword \"ANTENNAMODEL\" in LEF file; ignoring.                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m79\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNADIFFSIDEAREARATIO\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 79 (Message): Unknown keyword \"ANTENNADIFFSIDEAREARATIO\" in LEF file; ignoring.                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m112\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"MINENCLOSEDAREA\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 112 (Message): Unknown keyword \"MINENCLOSEDAREA\" in LEF file; ignoring.                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m114\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNAMODEL\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 114 (Message): Unknown keyword \"ANTENNAMODEL\" in LEF file; ignoring.                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m115\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNADIFFSIDEAREARATIO\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 115 (Message): Unknown keyword \"ANTENNADIFFSIDEAREARATIO\" in LEF file; ignoring.                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m121\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"MAXIMUMDENSITY\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 121 (Message): Unknown keyword \"MAXIMUMDENSITY\" in LEF file; ignoring.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m122\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"DENSITYCHECKWINDOW\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 122 (Message): Unknown keyword \"DENSITYCHECKWINDOW\" in LEF file; ignoring.                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m123\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"DENSITYCHECKSTEP\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 123 (Message): Unknown keyword \"DENSITYCHECKSTEP\" in LEF file; ignoring.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m156\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"MINENCLOSEDAREA\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 156 (Message): Unknown keyword \"MINENCLOSEDAREA\" in LEF file; ignoring.                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m164\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNAMODEL\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 164 (Message): Unknown keyword \"ANTENNAMODEL\" in LEF file; ignoring.                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m165\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNADIFFSIDEAREARATIO\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 165 (Message): Unknown keyword \"ANTENNADIFFSIDEAREARATIO\" in LEF file; ignoring.                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m167\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"MAXIMUMDENSITY\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 167 (Message): Unknown keyword \"MAXIMUMDENSITY\" in LEF file; ignoring.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m168\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"DENSITYCHECKWINDOW\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 168 (Message): Unknown keyword \"DENSITYCHECKWINDOW\" in LEF file; ignoring.                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m169\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"DENSITYCHECKSTEP\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 169 (Message): Unknown keyword \"DENSITYCHECKSTEP\" in LEF file; ignoring.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m206\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNAMODEL\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 206 (Message): Unknown keyword \"ANTENNAMODEL\" in LEF file; ignoring.                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m207\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNADIFFSIDEAREARATIO\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 207 (Message): Unknown keyword \"ANTENNADIFFSIDEAREARATIO\" in LEF file; ignoring.                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m209\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"MAXIMUMDENSITY\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 209 (Message): Unknown keyword \"MAXIMUMDENSITY\" in LEF file; ignoring.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m210\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"DENSITYCHECKWINDOW\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 210 (Message): Unknown keyword \"DENSITYCHECKWINDOW\" in LEF file; ignoring.                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m211\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"DENSITYCHECKSTEP\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 211 (Message): Unknown keyword \"DENSITYCHECKSTEP\" in LEF file; ignoring.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m248\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNAMODEL\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 248 (Message): Unknown keyword \"ANTENNAMODEL\" in LEF file; ignoring.                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m249\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNADIFFSIDEAREARATIO\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 249 (Message): Unknown keyword \"ANTENNADIFFSIDEAREARATIO\" in LEF file; ignoring.                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m251\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"MAXIMUMDENSITY\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 251 (Message): Unknown keyword \"MAXIMUMDENSITY\" in LEF file; ignoring.                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m252\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"DENSITYCHECKWINDOW\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 252 (Message): Unknown keyword \"DENSITYCHECKWINDOW\" in LEF file; ignoring.                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m253\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"DENSITYCHECKSTEP\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 253 (Message): Unknown keyword \"DENSITYCHECKSTEP\" in LEF file; ignoring.                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m290\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNAMODEL\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 290 (Message): Unknown keyword \"ANTENNAMODEL\" in LEF file; ignoring.                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read, Line \u001b[1;36m291\u001b[0m \u001b[1m(\u001b[0mMessage\u001b[1m)\u001b[0m: Unknown keyword \u001b[32m\"ANTENNADIFFSIDEAREARATIO\"\u001b[0m in LEF file; ignoring. \n" + ], + "text/html": [ + "
LEF read, Line 291 (Message): Unknown keyword \"ANTENNADIFFSIDEAREARATIO\" in LEF file; ignoring.                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read: Processed \u001b[1;36m797\u001b[0m lines. \n" + ], + "text/html": [ + "
LEF read: Processed 797 lines.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "> lef read \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/\u001b[0m\u001b[95msky130_ef_sc_hd.lef\u001b[0m \n" + ], + "text/html": [ + "
> lef read /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_ef_sc_hd.lef                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading LEF data from file \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/\u001b[0m\u001b[95msky130_ef_sc_hd.lef.\u001b[0m \n" + ], + "text/html": [ + "
Reading LEF data from file /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_ef_sc_hd.lef.                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "This action cannot be undone. \n" + ], + "text/html": [ + "
This action cannot be undone.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read: Processed \u001b[1;36m278\u001b[0m lines. \n" + ], + "text/html": [ + "
LEF read: Processed 278 lines.                                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "> lef read \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/\u001b[0m\u001b[95msky130_fd_sc_hd.lef\u001b[0m \n" + ], + "text/html": [ + "
> lef read /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_fd_sc_hd.lef                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading LEF data from file \u001b[35m/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/\u001b[0m\u001b[95msky130_fd_sc_hd.lef.\u001b[0m \n" + ], + "text/html": [ + "
Reading LEF data from file /root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/lef/sky130_fd_sc_hd.lef.                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "This action cannot be undone. \n" + ], + "text/html": [ + "
This action cannot be undone.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LEF read: Processed \u001b[1;36m56535\u001b[0m lines. \n" + ], + "text/html": [ + "
LEF read: Processed 56535 lines.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "> def read \u001b[35m/content/openlane_run/28-openroad-fillinsertion/\u001b[0m\u001b[95mtapeout_vedic_mac_16.def\u001b[0m -noblockage -labels \n" + ], + "text/html": [ + "
> def read /content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.def -noblockage -labels            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading DEF data from file \u001b[35m/content/openlane_run/28-openroad-fillinsertion/\u001b[0m\u001b[95mtapeout_vedic_mac_16.def.\u001b[0m \n" + ], + "text/html": [ + "
Reading DEF data from file /content/openlane_run/28-openroad-fillinsertion/tapeout_vedic_mac_16.def.               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "This action cannot be undone. \n" + ], + "text/html": [ + "
This action cannot be undone.                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Processed \u001b[1;36m4\u001b[0m vias total. \n" + ], + "text/html": [ + "
Processed 4 vias total.                                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Processed \u001b[1;36m4652\u001b[0m subcell instances total. \n" + ], + "text/html": [ + "
Processed 4652 subcell instances total.                                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Processed \u001b[1;36m109\u001b[0m pins total. \n" + ], + "text/html": [ + "
Processed 109 pins total.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Processed \u001b[1;36m2\u001b[0m special nets total. \n" + ], + "text/html": [ + "
Processed 2 special nets total.                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Processed \u001b[1;36m1905\u001b[0m nets total. \n" + ], + "text/html": [ + "
Processed 1905 nets total.                                                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "DEF read: Processed \u001b[1;36m32566\u001b[0m lines. \n" + ], + "text/html": [ + "
DEF read: Processed 32566 lines.                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"B\u001b[0m\u001b[32m[\u001b[0m\u001b[32m14\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"B[14]\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"C\u001b[0m\u001b[32m[\u001b[0m\u001b[32m15\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\"\u001b[0m from metal2 to via2 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"C[15]\" from metal2 to via2 in cell tapeout_vedic_mac_16.                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"C\u001b[0m\u001b[32m[\u001b[0m\u001b[32m7\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\"\u001b[0m from metal2 to via2 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"C[7]\" from metal2 to via2 in cell tapeout_vedic_mac_16.                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"Z\u001b[0m\u001b[32m[\u001b[0m\u001b[32m10\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"Z[10]\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0051_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0051_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0321_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0321_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0355_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0355_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0366_\"\u001b[0m from metal2 to via2 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0366_\" from metal2 to via2 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0470_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0470_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0526_\"\u001b[0m from metal1 to viali in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0526_\" from metal1 to viali in cell tapeout_vedic_mac_16.                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0761_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0761_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0843_\"\u001b[0m from metal2 to via2 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0843_\" from metal2 to via2 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_0920_\"\u001b[0m from metal2 to via2 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_0920_\" from metal2 to via2 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1062_\"\u001b[0m from metal2 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1062_\" from metal2 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1063_\"\u001b[0m from metal1 to viali in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1063_\" from metal1 to viali in cell tapeout_vedic_mac_16.                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1068_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1068_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1258_\"\u001b[0m from metal2 to via2 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1258_\" from metal2 to via2 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1304_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1304_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1346_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1346_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1515_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1515_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1527_\"\u001b[0m from metal2 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1527_\" from metal2 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1671_\"\u001b[0m from metal1 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1671_\" from metal1 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1735_\"\u001b[0m from metal1 to viali in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1735_\" from metal1 to viali in cell tapeout_vedic_mac_16.                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Moving label \u001b[32m\"_1751_\"\u001b[0m from metal2 to via1 in cell tapeout_vedic_mac_16. \n" + ], + "text/html": [ + "
Moving label \"_1751_\" from metal2 to via1 in cell tapeout_vedic_mac_16.                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Processing tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Processing tapeout_vedic_mac_16                                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_ef_sc_hd__decap_12 into sky130_ef_sc_hd__decap_12.ext: \n" + ], + "text/html": [ + "
Extracting sky130_ef_sc_hd__decap_12 into sky130_ef_sc_hd__decap_12.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__decap_3 into sky130_fd_sc_hd__decap_3.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__decap_3 into sky130_fd_sc_hd__decap_3.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__fill_1 into sky130_fd_sc_hd__fill_1.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__fill_1 into sky130_fd_sc_hd__fill_1.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__tapvpwrvgnd_1 into sky130_fd_sc_hd__tapvpwrvgnd_1.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__tapvpwrvgnd_1 into sky130_fd_sc_hd__tapvpwrvgnd_1.ext:                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__decap_4 into sky130_fd_sc_hd__decap_4.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__decap_4 into sky130_fd_sc_hd__decap_4.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__decap_6 into sky130_fd_sc_hd__decap_6.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__decap_6 into sky130_fd_sc_hd__decap_6.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__decap_8 into sky130_fd_sc_hd__decap_8.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__decap_8 into sky130_fd_sc_hd__decap_8.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nand2_2 into sky130_fd_sc_hd__nand2_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nand2_2 into sky130_fd_sc_hd__nand2_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nor2_2 into sky130_fd_sc_hd__nor2_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nor2_2 into sky130_fd_sc_hd__nor2_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__fill_2 into sky130_fd_sc_hd__fill_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__fill_2 into sky130_fd_sc_hd__fill_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__xnor2_2 into sky130_fd_sc_hd__xnor2_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__xnor2_2 into sky130_fd_sc_hd__xnor2_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__and2_2 into sky130_fd_sc_hd__and2_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__and2_2 into sky130_fd_sc_hd__and2_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__or2_2 into sky130_fd_sc_hd__or2_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__or2_2 into sky130_fd_sc_hd__or2_2.ext:                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a22oi_2 into sky130_fd_sc_hd__a22oi_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a22oi_2 into sky130_fd_sc_hd__a22oi_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a22o_2 into sky130_fd_sc_hd__a22o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a22o_2 into sky130_fd_sc_hd__a22o_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__and3_2 into sky130_fd_sc_hd__and3_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__and3_2 into sky130_fd_sc_hd__and3_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a21oi_2 into sky130_fd_sc_hd__a21oi_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a21oi_2 into sky130_fd_sc_hd__a21oi_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a21o_2 into sky130_fd_sc_hd__a21o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a21o_2 into sky130_fd_sc_hd__a21o_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nand3_2 into sky130_fd_sc_hd__nand3_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nand3_2 into sky130_fd_sc_hd__nand3_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a31o_2 into sky130_fd_sc_hd__a31o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a31o_2 into sky130_fd_sc_hd__a31o_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nand2b_2 into sky130_fd_sc_hd__nand2b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nand2b_2 into sky130_fd_sc_hd__nand2b_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o21ai_2 into sky130_fd_sc_hd__o21ai_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o21ai_2 into sky130_fd_sc_hd__o21ai_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a21bo_2 into sky130_fd_sc_hd__a21bo_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a21bo_2 into sky130_fd_sc_hd__a21bo_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o2111a_2 into sky130_fd_sc_hd__o2111a_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o2111a_2 into sky130_fd_sc_hd__o2111a_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nand4_2 into sky130_fd_sc_hd__nand4_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nand4_2 into sky130_fd_sc_hd__nand4_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__inv_2 into sky130_fd_sc_hd__inv_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__inv_2 into sky130_fd_sc_hd__inv_2.ext:                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o21a_2 into sky130_fd_sc_hd__o21a_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o21a_2 into sky130_fd_sc_hd__o21a_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__and4_2 into sky130_fd_sc_hd__and4_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__and4_2 into sky130_fd_sc_hd__and4_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a32o_2 into sky130_fd_sc_hd__a32o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a32o_2 into sky130_fd_sc_hd__a32o_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nor3_2 into sky130_fd_sc_hd__nor3_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nor3_2 into sky130_fd_sc_hd__nor3_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__or3b_2 into sky130_fd_sc_hd__or3b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__or3b_2 into sky130_fd_sc_hd__or3b_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__or3_2 into sky130_fd_sc_hd__or3_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__or3_2 into sky130_fd_sc_hd__or3_2.ext:                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o311a_2 into sky130_fd_sc_hd__o311a_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o311a_2 into sky130_fd_sc_hd__o311a_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o21bai_2 into sky130_fd_sc_hd__o21bai_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o21bai_2 into sky130_fd_sc_hd__o21bai_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__xor2_2 into sky130_fd_sc_hd__xor2_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__xor2_2 into sky130_fd_sc_hd__xor2_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o221a_2 into sky130_fd_sc_hd__o221a_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o221a_2 into sky130_fd_sc_hd__o221a_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__and2b_2 into sky130_fd_sc_hd__and2b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__and2b_2 into sky130_fd_sc_hd__and2b_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o21ba_2 into sky130_fd_sc_hd__o21ba_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o21ba_2 into sky130_fd_sc_hd__o21ba_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a211oi_2 into sky130_fd_sc_hd__a211oi_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a211oi_2 into sky130_fd_sc_hd__a211oi_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a21boi_2 into sky130_fd_sc_hd__a21boi_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a21boi_2 into sky130_fd_sc_hd__a21boi_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o211a_2 into sky130_fd_sc_hd__o211a_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o211a_2 into sky130_fd_sc_hd__o211a_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o31a_2 into sky130_fd_sc_hd__o31a_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o31a_2 into sky130_fd_sc_hd__o31a_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o2111ai_2 into sky130_fd_sc_hd__o2111ai_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o2111ai_2 into sky130_fd_sc_hd__o2111ai_2.ext:                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o211ai_2 into sky130_fd_sc_hd__o211ai_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o211ai_2 into sky130_fd_sc_hd__o211ai_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a311o_2 into sky130_fd_sc_hd__a311o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a311o_2 into sky130_fd_sc_hd__a311o_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__dfrtp_2 into sky130_fd_sc_hd__dfrtp_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__dfrtp_2 into sky130_fd_sc_hd__dfrtp_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a2bb2o_2 into sky130_fd_sc_hd__a2bb2o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a2bb2o_2 into sky130_fd_sc_hd__a2bb2o_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__or4bb_2 into sky130_fd_sc_hd__or4bb_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__or4bb_2 into sky130_fd_sc_hd__or4bb_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__and3b_2 into sky130_fd_sc_hd__and3b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__and3b_2 into sky130_fd_sc_hd__and3b_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a211o_2 into sky130_fd_sc_hd__a211o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a211o_2 into sky130_fd_sc_hd__a211o_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__mux2_1 into sky130_fd_sc_hd__mux2_1.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__mux2_1 into sky130_fd_sc_hd__mux2_1.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__clkbuf_16 into sky130_fd_sc_hd__clkbuf_16.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__clkbuf_16 into sky130_fd_sc_hd__clkbuf_16.ext:                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__bufinv_16 into sky130_fd_sc_hd__bufinv_16.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__bufinv_16 into sky130_fd_sc_hd__bufinv_16.ext:                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o31ai_2 into sky130_fd_sc_hd__o31ai_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o31ai_2 into sky130_fd_sc_hd__o31ai_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a221o_2 into sky130_fd_sc_hd__a221o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a221o_2 into sky130_fd_sc_hd__a221o_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a41o_2 into sky130_fd_sc_hd__a41o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a41o_2 into sky130_fd_sc_hd__a41o_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a311oi_2 into sky130_fd_sc_hd__a311oi_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a311oi_2 into sky130_fd_sc_hd__a311oi_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__inv_4 into sky130_fd_sc_hd__inv_4.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__inv_4 into sky130_fd_sc_hd__inv_4.ext:                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nor4b_2 into sky130_fd_sc_hd__nor4b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nor4b_2 into sky130_fd_sc_hd__nor4b_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nand3b_2 into sky130_fd_sc_hd__nand3b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nand3b_2 into sky130_fd_sc_hd__nand3b_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__or4b_2 into sky130_fd_sc_hd__or4b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__or4b_2 into sky130_fd_sc_hd__or4b_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__clkinv_2 into sky130_fd_sc_hd__clkinv_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__clkinv_2 into sky130_fd_sc_hd__clkinv_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__and4b_2 into sky130_fd_sc_hd__and4b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__and4b_2 into sky130_fd_sc_hd__and4b_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__nor3b_2 into sky130_fd_sc_hd__nor3b_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__nor3b_2 into sky130_fd_sc_hd__nor3b_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__or4_2 into sky130_fd_sc_hd__or4_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__or4_2 into sky130_fd_sc_hd__or4_2.ext:                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a2111o_2 into sky130_fd_sc_hd__a2111o_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a2111o_2 into sky130_fd_sc_hd__a2111o_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o311ai_2 into sky130_fd_sc_hd__o311ai_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o311ai_2 into sky130_fd_sc_hd__o311ai_2.ext:                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__o32a_2 into sky130_fd_sc_hd__o32a_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__o32a_2 into sky130_fd_sc_hd__o32a_2.ext:                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting sky130_fd_sc_hd__a31oi_2 into sky130_fd_sc_hd__a31oi_2.ext: \n" + ], + "text/html": [ + "
Extracting sky130_fd_sc_hd__a31oi_2 into sky130_fd_sc_hd__a31oi_2.ext:                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Extracting tapeout_vedic_mac_16 into tapeout_vedic_mac_16.ext: \n" + ], + "text/html": [ + "
Extracting tapeout_vedic_mac_16 into tapeout_vedic_mac_16.ext:                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "exttospice finished. \n" + ], + "text/html": [ + "
exttospice finished.                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Using technology \u001b[32m\"sky130A\"\u001b[0m, version \u001b[1;36m1.0\u001b[0m.\u001b[1;36m466\u001b[0m-\u001b[1;36m0\u001b[0m-gbdc9412 \n" + ], + "text/html": [ + "
Using technology \"sky130A\", version 1.0.466-0-gbdc9412                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[92m─────────────────────────────────────────────────── \u001b[0mNetgen LVS\u001b[92m ────────────────────────────────────────────────────\u001b[0m\n" + ], + "text/html": [ + "
─────────────────────────────────────────────────── Netgen LVS ────────────────────────────────────────────────────\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:37]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Running \u001b[32m'Netgen.LVS'\u001b[0m… \u001b]8;id=173449;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=633155;file:///content/openlane_ipynb/openlane/steps/step.py#1088\u001b\\\u001b[2m1088\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:37] VERBOSE  Running 'Netgen.LVS'step.py:1088\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2;36m[10:04:37]\u001b[0m\u001b[2;36m \u001b[0mVERBOSE Logging subprocess to \u001b]8;id=392429;file:///content/openlane_run/34-netgen-lvs/netgen-lvs.log\u001b\\\u001b[95mopenlane_run/\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=541582;file:///content/openlane_run/34-netgen-lvs/netgen-lvs.log\u001b\\\u001b[1;36m34\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=392429;file:///content/openlane_run/34-netgen-lvs/netgen-lvs.log\u001b\\\u001b[95m-netgen-lvs/netgen-lvs.log\u001b[0m\u001b]8;;\u001b\\… \u001b]8;id=772153;file:///content/openlane_ipynb/openlane/steps/step.py\u001b\\\u001b[2mstep.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=203717;file:///content/openlane_ipynb/openlane/steps/step.py#1268\u001b\\\u001b[2m1268\u001b[0m\u001b]8;;\u001b\\\n" + ], + "text/html": [ + "
[10:04:37] VERBOSE  Logging subprocess to openlane_run/34-netgen-lvs/netgen-lvs.logstep.py:1268\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[35m/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/\u001b[0m\u001b[95mbash\u001b[0m: warning: setlocale: LC_ALL: cannot change locale \n", + "\u001b[1m(\u001b[0men_US.UTF-\u001b[1;36m8\u001b[0m\u001b[1m)\u001b[0m \n" + ], + "text/html": [ + "
/nix/store/306znyj77fv49kwnkpxmb0j2znqpa8bj-bash-5.2p26/bin/bash: warning: setlocale: LC_ALL: cannot change locale \n",
+              "(en_US.UTF-8)                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Netgen \u001b[1;36m1.5\u001b[0m.\u001b[1;36m270\u001b[0m compiled on Sun Jun \u001b[1;36m2\u001b[0m \u001b[1;92m19:00:27\u001b[0m UTC \u001b[1;36m2024\u001b[0m \n" + ], + "text/html": [ + "
Netgen 1.5.270 compiled on Sun Jun  2 19:00:27 UTC 2024                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Warning: netgen command \u001b[32m'format'\u001b[0m use fully-qualified name \u001b[32m'::netgen::format'\u001b[0m \n" + ], + "text/html": [ + "
Warning: netgen command 'format' use fully-qualified name '::netgen::format'                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Warning: netgen command \u001b[32m'global'\u001b[0m use fully-qualified name \u001b[32m'::netgen::global'\u001b[0m \n" + ], + "text/html": [ + "
Warning: netgen command 'global' use fully-qualified name '::netgen::global'                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Warning: A case-insensitive file has been read and so the verilog file must be treated case-insensitive to \n", + "match. \n" + ], + "text/html": [ + "
Warning:  A case-insensitive file has been read and so the      verilog file must be treated case-insensitive to   \n",
+              "match.                                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading SPICE netlist file \n", + "\u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__decap_12.spice'\u001b[0m\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Reading SPICE netlist file                                                                                         \n",
+              "'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__decap_12.spice'...                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Call to undefined subcircuit sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
Call to undefined subcircuit sky130_fd_pr__pfet_01v8_hvt                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating placeholder cell definition. \n" + ], + "text/html": [ + "
Creating placeholder cell definition.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Call to undefined subcircuit sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
Call to undefined subcircuit sky130_fd_pr__nfet_01v8                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating placeholder cell definition. \n" + ], + "text/html": [ + "
Creating placeholder cell definition.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading SPICE netlist file \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__fill_12.spice'\u001b[0m\u001b[33m...\u001b[0m\n" + ], + "text/html": [ + "
Reading SPICE netlist file '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__fill_12.spice'...\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading SPICE netlist file \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__fill_4.spice'\u001b[0m\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Reading SPICE netlist file '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__fill_4.spice'... \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading SPICE netlist file \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__fill_8.spice'\u001b[0m\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Reading SPICE netlist file '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__fill_8.spice'... \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading SPICE netlist file \u001b[32m'/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice'\u001b[0m\u001b[33m...\u001b[0m \n" + ], + "text/html": [ + "
Reading SPICE netlist file '/root/.volare/sky130A/libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice'...         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Call to undefined subcircuit sky130_fd_sc_hd__nand2_2 \n" + ], + "text/html": [ + "
Call to undefined subcircuit sky130_fd_sc_hd__nand2_2                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating placeholder cell definition. \n" + ], + "text/html": [ + "
Creating placeholder cell definition.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Call to undefined subcircuit sky130_fd_sc_hd__nor2_2 \n" + ], + "text/html": [ + "
Call to undefined subcircuit sky130_fd_sc_hd__nor2_2                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Creating placeholder cell definition. \n" + ], + "text/html": [ + "
Creating placeholder cell definition.                                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Warning: A case-insensitive file has been read and so the verilog file must be treated case-insensitive to \n", + "match. \n" + ], + "text/html": [ + "
Warning:  A case-insensitive file has been read and so the      verilog file must be treated case-insensitive to   \n",
+              "match.                                                                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Note: Implicit pin Y in instance clkload0 of sky130_fd_sc_hd__inv_4 in cell tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Note:  Implicit pin Y in instance clkload0 of sky130_fd_sc_hd__inv_4 in cell tapeout_vedic_mac_16                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Note: Implicit pin Y in instance clkload1 of sky130_fd_sc_hd__bufinv_16 in cell tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Note:  Implicit pin Y in instance clkload1 of sky130_fd_sc_hd__bufinv_16 in cell tapeout_vedic_mac_16              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Note: Implicit pin Y in instance clkload2 of sky130_fd_sc_hd__clkinv_2 in cell tapeout_vedic_mac_16 \n" + ], + "text/html": [ + "
Note:  Implicit pin Y in instance clkload2 of sky130_fd_sc_hd__clkinv_2 in cell tapeout_vedic_mac_16               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Treating empty subcircuits as black-box cells \n" + ], + "text/html": [ + "
Treating empty subcircuits as black-box cells                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Generating JSON file result \n" + ], + "text/html": [ + "
Generating JSON file result                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Reading setup file \u001b[35m/content/openlane_ipynb/openlane/scripts/netgen/\u001b[0m\u001b[95msetup.tcl\u001b[0m \n" + ], + "text/html": [ + "
Reading setup file /content/openlane_ipynb/openlane/scripts/netgen/setup.tcl                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Model sky130_fd_pr__res_generic_po pin end_a == end_b \n" + ], + "text/html": [ + "
Model sky130_fd_pr__res_generic_po pin end_a == end_b                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property mult found for device sky130_fd_pr__res_generic_po \n" + ], + "text/html": [ + "
No property mult found for device sky130_fd_pr__res_generic_po                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Model sky130_fd_pr__nfet_01v8 pin \u001b[1;36m1\u001b[0m == \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Model sky130_fd_pr__nfet_01v8 pin 1 == 3                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property mult found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property mult found for device sky130_fd_pr__nfet_01v8                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property sa found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property sa found for device sky130_fd_pr__nfet_01v8                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property sb found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property sb found for device sky130_fd_pr__nfet_01v8                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property sd found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property sd found for device sky130_fd_pr__nfet_01v8                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property nf found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property nf found for device sky130_fd_pr__nfet_01v8                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property nrd found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property nrd found for device sky130_fd_pr__nfet_01v8                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property nrs found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property nrs found for device sky130_fd_pr__nfet_01v8                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property area found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property area found for device sky130_fd_pr__nfet_01v8                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property perim found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property perim found for device sky130_fd_pr__nfet_01v8                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property topography found for device sky130_fd_pr__nfet_01v8 \n" + ], + "text/html": [ + "
No property topography found for device sky130_fd_pr__nfet_01v8                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Model sky130_fd_pr__pfet_01v8_hvt pin \u001b[1;36m1\u001b[0m == \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Model sky130_fd_pr__pfet_01v8_hvt pin 1 == 3                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property mult found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property mult found for device sky130_fd_pr__pfet_01v8_hvt                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property sa found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property sa found for device sky130_fd_pr__pfet_01v8_hvt                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property sb found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property sb found for device sky130_fd_pr__pfet_01v8_hvt                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property sd found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property sd found for device sky130_fd_pr__pfet_01v8_hvt                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property nf found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property nf found for device sky130_fd_pr__pfet_01v8_hvt                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property nrd found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property nrd found for device sky130_fd_pr__pfet_01v8_hvt                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property nrs found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property nrs found for device sky130_fd_pr__pfet_01v8_hvt                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property area found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property area found for device sky130_fd_pr__pfet_01v8_hvt                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property perim found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property perim found for device sky130_fd_pr__pfet_01v8_hvt                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property topography found for device sky130_fd_pr__pfet_01v8_hvt \n" + ], + "text/html": [ + "
No property topography found for device sky130_fd_pr__pfet_01v8_hvt                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property value found for device sky130_fd_pr__diode_pw2nd_05v5 \n" + ], + "text/html": [ + "
No property value found for device sky130_fd_pr__diode_pw2nd_05v5                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property mult found for device sky130_fd_pr__diode_pw2nd_05v5 \n" + ], + "text/html": [ + "
No property mult found for device sky130_fd_pr__diode_pw2nd_05v5                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "No property perim found for device sky130_fd_pr__diode_pw2nd_05v5 \n" + ], + "text/html": [ + "
No property perim found for device sky130_fd_pr__diode_pw2nd_05v5                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Comparison output logged to file \u001b[35m/content/openlane_run/34-netgen-lvs/reports/\u001b[0m\u001b[95mlvs.netgen.rpt\u001b[0m \n" + ], + "text/html": [ + "
Comparison output logged to file /content/openlane_run/34-netgen-lvs/reports/lvs.netgen.rpt                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Logging to file \u001b[32m\"/content/openlane_run/34-netgen-lvs/reports/lvs.netgen.rpt\"\u001b[0m enabled \n" + ], + "text/html": [ + "
Logging to file \"/content/openlane_run/34-netgen-lvs/reports/lvs.netgen.rpt\" enabled                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__or2_2'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or2_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or2_2 contains 0 device instances.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m7\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 7 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__or2_2'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or2_2 contains \u001b[1;36m8\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or2_2 contains 8 device instances.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   4                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m9\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 9 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or2_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or2_2 contains no devices.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a22o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a22o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a22o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a22o_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a22o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a22o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a22o_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a22o_2 contains 12 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m13\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 13 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a22o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a22o_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__and2_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and2_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and2_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m7\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 7 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__and2_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and2_2 contains \u001b[1;36m8\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and2_2 contains 8 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   4                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m9\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 9 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and2_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and2_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand2b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nand2b_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand2b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand2b_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m7\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 7 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand2b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nand2b_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand2b_2 contains \u001b[1;36m10\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand2b_2 contains 10 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   5                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   5                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m9\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 9 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand2b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand2b_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a21o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a21o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21o_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a21o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a21o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21o_2 contains \u001b[1;36m10\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21o_2 contains 10 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   5                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   5                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21o_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__fill_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__fill_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__fill_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__fill_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__fill_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__fill_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__fill_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__fill_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__fill_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__fill_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_ef_sc_hd__decap_12'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_ef_sc_hd__decap_12'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_ef_sc_hd__decap_12 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_ef_sc_hd__decap_12 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_ef_sc_hd__decap_12'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_ef_sc_hd__decap_12'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_ef_sc_hd__decap_12 contains \u001b[1;36m2\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_ef_sc_hd__decap_12 contains 2 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   1                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m4\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 4 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_ef_sc_hd__decap_12 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_ef_sc_hd__decap_12 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__tapvpwrvgnd_1'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__tapvpwrvgnd_1'                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__tapvpwrvgnd_1 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__tapvpwrvgnd_1 contains 0 device instances.                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m2\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 2 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__tapvpwrvgnd_1'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__tapvpwrvgnd_1'                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__tapvpwrvgnd_1 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__tapvpwrvgnd_1 contains 0 device instances.                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m2\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 2 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__tapvpwrvgnd_1 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__tapvpwrvgnd_1 contains no devices.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__fill_1'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__fill_1'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__fill_1 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__fill_1 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__fill_1'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__fill_1'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__fill_1 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__fill_1 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__fill_1 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__fill_1 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__decap_4'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__decap_4'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_4 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_4 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__decap_4'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__decap_4'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_4 contains \u001b[1;36m2\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_4 contains 2 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   1                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m4\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 4 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_4 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_4 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__xor2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__xor2_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__xor2_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__xor2_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m7\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 7 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__xor2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__xor2_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__xor2_2 contains \u001b[1;36m20\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__xor2_2 contains 20 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:  10                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:  10                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__xor2_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__xor2_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a32o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a32o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a32o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a32o_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a32o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a32o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a32o_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a32o_2 contains 14 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a32o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a32o_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nand2_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand2_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand2_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m7\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 7 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nand2_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand2_2 contains \u001b[1;36m8\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand2_2 contains 8 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   4                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m8\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 8 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand2_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand2_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand3_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nand3_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand3_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand3_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand3_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nand3_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand3_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand3_2 contains 12 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m10\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 10 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand3_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand3_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o21ba_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o21ba_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21ba_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21ba_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o21ba_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o21ba_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21ba_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21ba_2 contains 12 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21ba_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21ba_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__decap_6'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__decap_6'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_6 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_6 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__decap_6'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__decap_6'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_6 contains \u001b[1;36m2\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_6 contains 2 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   1                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m4\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 4 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_6 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_6 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__decap_3'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__decap_3'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_3 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_3 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__decap_3'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__decap_3'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_3 contains \u001b[1;36m2\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_3 contains 2 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   1                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m4\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 4 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_3 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_3 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nor2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nor2_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor2_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor2_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m7\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 7 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nor2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nor2_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor2_2 contains \u001b[1;36m8\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor2_2 contains 8 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   4                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m8\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 8 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor2_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor2_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a21oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a21oi_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21oi_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21oi_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a21oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a21oi_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21oi_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21oi_2 contains 12 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21oi_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21oi_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__decap_8'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__decap_8'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_8 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_8 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m4\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 4 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__decap_8'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__decap_8'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_8 contains \u001b[1;36m2\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_8 contains 2 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   1                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m4\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 4 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__decap_8 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__decap_8 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__dfrtp_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__dfrtp_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__dfrtp_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__dfrtp_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__dfrtp_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__dfrtp_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__dfrtp_2 contains \u001b[1;36m30\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__dfrtp_2 contains 30 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:  15                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:  15                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m21\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 21 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__dfrtp_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__dfrtp_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__xnor2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__xnor2_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__xnor2_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__xnor2_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m7\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 7 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__xnor2_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__xnor2_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__xnor2_2 contains \u001b[1;36m20\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__xnor2_2 contains 20 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:  10                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:  10                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__xnor2_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__xnor2_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__inv_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__inv_2'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__inv_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__inv_2 contains 0 device instances.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m6\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 6 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__inv_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__inv_2'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__inv_2 contains \u001b[1;36m4\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__inv_2 contains 4 device instances.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   2                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   2                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m6\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 6 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__inv_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__inv_2 contains no devices.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o31ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o31ai_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o31ai_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o31ai_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o31ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o31ai_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o31ai_2 contains \u001b[1;36m16\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o31ai_2 contains 16 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   8                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   8                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o31ai_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o31ai_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o2111a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o2111a_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o2111a_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o2111a_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o2111a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o2111a_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o2111a_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o2111a_2 contains 14 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o2111a_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o2111a_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and4_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__and4_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and4_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and4_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and4_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__and4_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and4_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and4_2 contains 12 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m13\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 13 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and4_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and4_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and3_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__and3_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and3_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and3_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and3_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__and3_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and3_2 contains \u001b[1;36m10\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and3_2 contains 10 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   5                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   5                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and3_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and3_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o21ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o21ai_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21ai_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21ai_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o21ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o21ai_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21ai_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21ai_2 contains 12 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m10\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 10 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21ai_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21ai_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o2111ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o2111ai_2'                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o2111ai_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o2111ai_2 contains 0 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o2111ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o2111ai_2'                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o2111ai_2 contains \u001b[1;36m20\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o2111ai_2 contains 20 device instances.                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:  10                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:  10                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m14\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 14 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o2111ai_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o2111ai_2 contains no devices.                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and2b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__and2b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and2b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and2b_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m7\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 7 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and2b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__and2b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and2b_2 contains \u001b[1;36m10\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and2b_2 contains 10 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   5                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   5                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m10\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 10 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and2b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and2b_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__mux2_1'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__mux2_1'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__mux2_1 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__mux2_1 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__mux2_1'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__mux2_1'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__mux2_1 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__mux2_1 contains 12 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m14\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 14 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__mux2_1 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__mux2_1 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a31o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a31o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a31o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a31o_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a31o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a31o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a31o_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a31o_2 contains 12 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m13\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 13 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a31o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a31o_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nor3_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nor3_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor3_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor3_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nor3_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nor3_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor3_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor3_2 contains 12 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m10\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 10 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor3_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor3_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a21bo_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a21bo_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21bo_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21bo_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a21bo_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a21bo_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21bo_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21bo_2 contains 12 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21bo_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21bo_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand4_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nand4_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand4_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand4_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand4_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nand4_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand4_2 contains \u001b[1;36m16\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand4_2 contains 16 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   8                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   8                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand4_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand4_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or3b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__or3b_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or3b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or3b_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or3b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__or3b_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or3b_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or3b_2 contains 12 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or3b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or3b_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and3b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__and3b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and3b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and3b_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and3b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__and3b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and3b_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and3b_2 contains 12 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and3b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and3b_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or3_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__or3_2'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or3_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or3_2 contains 0 device instances.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or3_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__or3_2'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or3_2 contains \u001b[1;36m10\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or3_2 contains 10 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   5                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   5                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or3_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or3_2 contains no devices.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a311o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a311o_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a311o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a311o_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a311o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a311o_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a311o_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a311o_2 contains 14 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a311o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a311o_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o221a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o221a_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o221a_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o221a_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o221a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o221a_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o221a_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o221a_2 contains 14 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o221a_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o221a_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o21a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o21a_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21a_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21a_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o21a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o21a_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21a_2 contains \u001b[1;36m10\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21a_2 contains 10 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   5                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   5                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21a_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21a_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a2bb2o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a2bb2o_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a2bb2o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a2bb2o_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a2bb2o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a2bb2o_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a2bb2o_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a2bb2o_2 contains 14 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m14\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 14 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a2bb2o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a2bb2o_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__inv_4'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__inv_4'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__inv_4 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__inv_4 contains 0 device instances.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m6\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 6 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__inv_4'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__inv_4'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__inv_4 contains \u001b[1;36m8\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__inv_4 contains 8 device instances.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   4                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m6\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 6 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__inv_4 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__inv_4 contains no devices.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o211a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o211a_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o211a_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o211a_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o211a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o211a_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o211a_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o211a_2 contains 12 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m13\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 13 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o211a_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o211a_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a311oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a311oi_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a311oi_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a311oi_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a311oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a311oi_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a311oi_2 contains \u001b[1;36m20\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a311oi_2 contains 20 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:  10                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:  10                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m14\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 14 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a311oi_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a311oi_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__bufinv_16'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__bufinv_16'                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__bufinv_16 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__bufinv_16 contains 0 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m6\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 6 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__bufinv_16'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__bufinv_16'                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__bufinv_16 contains \u001b[1;36m50\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__bufinv_16 contains 50 device instances.                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:  25                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:  25                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m8\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 8 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__bufinv_16 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__bufinv_16 contains no devices.                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a22oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a22oi_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a22oi_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a22oi_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a22oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a22oi_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a22oi_2 contains \u001b[1;36m16\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a22oi_2 contains 16 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   8                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   8                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a22oi_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a22oi_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__clkinv_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__clkinv_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__clkinv_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__clkinv_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m6\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 6 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__clkinv_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__clkinv_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__clkinv_2 contains \u001b[1;36m5\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__clkinv_2 contains 5 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   2                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   3                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m6\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 6 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__clkinv_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__clkinv_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o31a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o31a_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o31a_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o31a_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o31a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o31a_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o31a_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o31a_2 contains 12 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m13\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 13 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o31a_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o31a_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o21bai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o21bai_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21bai_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21bai_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o21bai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o21bai_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21bai_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21bai_2 contains 14 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o21bai_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o21bai_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__clkbuf_16'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__clkbuf_16'                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__clkbuf_16 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__clkbuf_16 contains 0 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m6\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 6 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__clkbuf_16'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__clkbuf_16'                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__clkbuf_16 contains \u001b[1;36m40\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__clkbuf_16 contains 40 device instances.                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m20\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:  20                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m20\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:  20                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m7\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 7 nets.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__clkbuf_16 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__clkbuf_16 contains no devices.                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and4b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__and4b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and4b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and4b_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__and4b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__and4b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and4b_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and4b_2 contains 14 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m14\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 14 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__and4b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__and4b_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a21boi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a21boi_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21boi_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21boi_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a21boi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a21boi_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21boi_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21boi_2 contains 14 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a21boi_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a21boi_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or4bb_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__or4bb_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4bb_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4bb_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or4bb_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__or4bb_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4bb_2 contains \u001b[1;36m16\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4bb_2 contains 16 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   8                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   8                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4bb_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4bb_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand3b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nand3b_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand3b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand3b_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nand3b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nand3b_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand3b_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand3b_2 contains 14 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nand3b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nand3b_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o311a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o311a_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o311a_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o311a_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o311a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o311a_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o311a_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o311a_2 contains 14 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o311a_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o311a_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a31oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a31oi_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a31oi_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a31oi_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a31oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a31oi_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a31oi_2 contains \u001b[1;36m16\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a31oi_2 contains 16 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   8                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   8                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a31oi_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a31oi_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a211oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a211oi_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a211oi_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a211oi_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a211oi_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a211oi_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a211oi_2 contains \u001b[1;36m16\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a211oi_2 contains 16 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   8                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   8                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a211oi_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a211oi_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a211o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a211o_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a211o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a211o_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a211o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a211o_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a211o_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a211o_2 contains 12 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m13\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 13 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a211o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a211o_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or4b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__or4b_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4b_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or4b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__or4b_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4b_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4b_2 contains 14 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m14\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 14 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4b_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a2111o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a2111o_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a2111o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a2111o_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a2111o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a2111o_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a2111o_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a2111o_2 contains 14 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a2111o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a2111o_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o32a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o32a_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o32a_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o32a_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o32a_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o32a_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o32a_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o32a_2 contains 14 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o32a_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o32a_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nor3b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nor3b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor3b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor3b_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m8\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 8 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nor3b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nor3b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor3b_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor3b_2 contains 14 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m11\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 11 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor3b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor3b_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a41o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a41o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a41o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a41o_2 contains 0 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a41o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a41o_2'                                                         \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a41o_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a41o_2 contains 14 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a41o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a41o_2 contains no devices.                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or4_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__or4_2'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4_2 contains 0 device instances.                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__or4_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__or4_2'                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4_2 contains \u001b[1;36m12\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4_2 contains 12 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   6                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   6                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m13\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 13 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__or4_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__or4_2 contains no devices.                                                                \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o311ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o311ai_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o311ai_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o311ai_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o311ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o311ai_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o311ai_2 contains \u001b[1;36m20\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o311ai_2 contains 20 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:  10                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m10\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:  10                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m14\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 14 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o311ai_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o311ai_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o211ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__o211ai_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o211ai_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o211ai_2 contains 0 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__o211ai_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__o211ai_2'                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o211ai_2 contains \u001b[1;36m16\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o211ai_2 contains 16 device instances.                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   8                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   8                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m12\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 12 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__o211ai_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__o211ai_2 contains no devices.                                                             \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nor4b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__nor4b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor4b_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor4b_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m9\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 9 disconnected pins.                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__nor4b_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__nor4b_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor4b_2 contains \u001b[1;36m18\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor4b_2 contains 18 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m9\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   9                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m9\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   9                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m13\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 13 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__nor4b_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__nor4b_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a221o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'sky130_fd_sc_hd__a221o_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a221o_2 contains \u001b[1;36m0\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a221o_2 contains 0 device instances.                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m0\u001b[0m nets, and \u001b[1;36m10\u001b[0m disconnected pins. \n" + ], + "text/html": [ + "
Circuit contains 0 nets, and 10 disconnected pins.                                                                 \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'sky130_fd_sc_hd__a221o_2'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'sky130_fd_sc_hd__a221o_2'                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a221o_2 contains \u001b[1;36m14\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a221o_2 contains 14 device instances.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__nfet_01v8 instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__nfet_01v8 instances:   7                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_pr__pfet_01v8_hvt instances: \u001b[1;36m7\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_pr__pfet_01v8_hvt instances:   7                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m15\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 15 nets.                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit sky130_fd_sc_hd__a221o_2 contains no devices. \n" + ], + "text/html": [ + "
Circuit sky130_fd_sc_hd__a221o_2 contains no devices.                                                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'tapeout_vedic_mac_16'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'tapeout_vedic_mac_16'                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit tapeout_vedic_mac_16 contains \u001b[1;36m4652\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit tapeout_vedic_mac_16 contains 4652 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__bufinv_16 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__bufinv_16 instances:   1                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o2111ai_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o2111ai_2 instances:   4                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a41o_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a41o_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a31o_2 instances: \u001b[1;36m36\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a31o_2 instances:  36                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21o_2 instances: \u001b[1;36m57\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21o_2 instances:  57                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__clkbuf_16 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__clkbuf_16 instances:   5                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o31ai_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o31ai_2 instances:   3                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4_2 instances:   1                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a31oi_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a31oi_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand4_2 instances: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand4_2 instances:  38                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a2bb2o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a2bb2o_2 instances:   4                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and3b_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and3b_2 instances:   2                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__xor2_2 instances: \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__xor2_2 instances: 107                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_ef_sc_hd__decap_12 instances: \u001b[1;36m578\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_ef_sc_hd__decap_12 instances: 578                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__dfrtp_2 instances: \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__dfrtp_2 instances:  32                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and4_2 instances: \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and4_2 instances:  30                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__inv_2 instances: \u001b[1;36m29\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__inv_2 instances:  29                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__inv_4 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__inv_4 instances:   1                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or3_2 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or3_2 instances:  25                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand3_2 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand3_2 instances:  25                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21ba_2 instances: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21ba_2 instances:  11                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and2b_2 instances: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and2b_2 instances:  38                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21boi_2 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21boi_2 instances:   6                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21bo_2 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21bo_2 instances:  15                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__clkinv_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__clkinv_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and3_2 instances: \u001b[1;36m100\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and3_2 instances: 100                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a2111o_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a2111o_2 instances:   2                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_3 instances: \u001b[1;36m373\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_3 instances: 373                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_4 instances: \u001b[1;36m258\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_4 instances: 258                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_6 instances: \u001b[1;36m198\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_6 instances: 198                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_8 instances: \u001b[1;36m225\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_8 instances: 225                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or2_2 instances: \u001b[1;36m158\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or2_2 instances: 158                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand2_2 instances: \u001b[1;36m266\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand2_2 instances: 266                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor4b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o311ai_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o311ai_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand3b_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand3b_2 instances:   3                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__mux2_1 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__mux2_1 instances:   2                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a211oi_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a211oi_2 instances:   3                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and2_2 instances: \u001b[1;36m112\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and2_2 instances: 112                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4b_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o32a_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o32a_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__xnor2_2 instances: \u001b[1;36m162\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__xnor2_2 instances: 162                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor3b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor3b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o221a_2 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o221a_2 instances:   5                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21bai_2 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21bai_2 instances:   8                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o211a_2 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o211a_2 instances:   8                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand2b_2 instances: \u001b[1;36m40\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand2b_2 instances:  40                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a311oi_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a311oi_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a221o_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a221o_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a211o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a211o_2 instances:   4                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o2111a_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o2111a_2 instances:   4                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or3b_2 instances: \u001b[1;36m20\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or3b_2 instances:  20                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4bb_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4bb_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor3_2 instances: \u001b[1;36m17\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor3_2 instances:  17                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a32o_2 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a32o_2 instances:  15                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a22o_2 instances: \u001b[1;36m71\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a22o_2 instances:  71                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o31a_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o31a_2 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21a_2 instances: \u001b[1;36m51\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21a_2 instances:  51                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o311a_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o311a_2 instances:   2                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a22oi_2 instances: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a22oi_2 instances:  11                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and4b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21ai_2 instances: \u001b[1;36m48\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21ai_2 instances:  48                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__tapvpwrvgnd_1 instances: \u001b[1;36m490\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__tapvpwrvgnd_1 instances: 490                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21oi_2 instances: \u001b[1;36m73\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21oi_2 instances:  73                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a311o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a311o_2 instances:   4                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__fill_1 instances: \u001b[1;36m472\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__fill_1 instances: 472                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__fill_2 instances: \u001b[1;36m225\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__fill_2 instances: 225                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o211ai_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o211ai_2 instances:   2                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor2_2 instances: \u001b[1;36m156\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor2_2 instances: 156                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m1910\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 1910 nets.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'tapeout_vedic_mac_16'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'tapeout_vedic_mac_16'                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit tapeout_vedic_mac_16 contains \u001b[1;36m4652\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit tapeout_vedic_mac_16 contains 4652 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__bufinv_16 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__bufinv_16 instances:   1                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o2111ai_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o2111ai_2 instances:   4                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a41o_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a41o_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a31o_2 instances: \u001b[1;36m36\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a31o_2 instances:  36                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21o_2 instances: \u001b[1;36m57\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21o_2 instances:  57                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__clkbuf_16 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__clkbuf_16 instances:   5                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o31ai_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o31ai_2 instances:   3                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4_2 instances:   1                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a31oi_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a31oi_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand4_2 instances: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand4_2 instances:  38                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a2bb2o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a2bb2o_2 instances:   4                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and3b_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and3b_2 instances:   2                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__xor2_2 instances: \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__xor2_2 instances: 107                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_ef_sc_hd__decap_12 instances: \u001b[1;36m578\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_ef_sc_hd__decap_12 instances: 578                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__dfrtp_2 instances: \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__dfrtp_2 instances:  32                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and4_2 instances: \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and4_2 instances:  30                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__inv_2 instances: \u001b[1;36m29\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__inv_2 instances:  29                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__inv_4 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__inv_4 instances:   1                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or3_2 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or3_2 instances:  25                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand3_2 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand3_2 instances:  25                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21ba_2 instances: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21ba_2 instances:  11                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and2b_2 instances: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and2b_2 instances:  38                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21boi_2 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21boi_2 instances:   6                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21bo_2 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21bo_2 instances:  15                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__clkinv_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__clkinv_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and3_2 instances: \u001b[1;36m100\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and3_2 instances: 100                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a2111o_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a2111o_2 instances:   2                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_3 instances: \u001b[1;36m373\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_3 instances: 373                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_4 instances: \u001b[1;36m258\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_4 instances: 258                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_6 instances: \u001b[1;36m198\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_6 instances: 198                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_8 instances: \u001b[1;36m225\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_8 instances: 225                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or2_2 instances: \u001b[1;36m158\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or2_2 instances: 158                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand2_2 instances: \u001b[1;36m266\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand2_2 instances: 266                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor4b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o311ai_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o311ai_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand3b_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand3b_2 instances:   3                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__mux2_1 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__mux2_1 instances:   2                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and2_2 instances: \u001b[1;36m112\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and2_2 instances: 112                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a211oi_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a211oi_2 instances:   3                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4b_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o32a_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o32a_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__xnor2_2 instances: \u001b[1;36m162\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__xnor2_2 instances: 162                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor3b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor3b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o221a_2 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o221a_2 instances:   5                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21bai_2 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21bai_2 instances:   8                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o211a_2 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o211a_2 instances:   8                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand2b_2 instances: \u001b[1;36m40\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand2b_2 instances:  40                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a311oi_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a311oi_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a221o_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a221o_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a211o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a211o_2 instances:   4                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o2111a_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o2111a_2 instances:   4                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or3b_2 instances: \u001b[1;36m20\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or3b_2 instances:  20                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4bb_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4bb_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor3_2 instances: \u001b[1;36m17\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor3_2 instances:  17                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a32o_2 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a32o_2 instances:  15                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a22o_2 instances: \u001b[1;36m71\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a22o_2 instances:  71                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o31a_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o31a_2 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21a_2 instances: \u001b[1;36m51\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21a_2 instances:  51                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o311a_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o311a_2 instances:   2                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a22oi_2 instances: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a22oi_2 instances:  11                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and4b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__tapvpwrvgnd_1 instances: \u001b[1;36m490\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__tapvpwrvgnd_1 instances: 490                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21ai_2 instances: \u001b[1;36m48\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21ai_2 instances:  48                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21oi_2 instances: \u001b[1;36m73\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21oi_2 instances:  73                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a311o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a311o_2 instances:   4                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__fill_1 instances: \u001b[1;36m472\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__fill_1 instances: 472                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__fill_2 instances: \u001b[1;36m225\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__fill_2 instances: 225                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o211ai_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o211ai_2 instances:   2                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor2_2 instances: \u001b[1;36m156\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor2_2 instances: 156                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m1910\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 1910 nets.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit was modified by parallel/series device merging. \n" + ], + "text/html": [ + "
Circuit was modified by parallel/series device merging.                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "New circuit summary: \n" + ], + "text/html": [ + "
New circuit summary:                                                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m1\u001b[0m: Circuit: \u001b[32m'tapeout_vedic_mac_16'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 1:  Circuit: 'tapeout_vedic_mac_16'                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit tapeout_vedic_mac_16 contains \u001b[1;36m1841\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit tapeout_vedic_mac_16 contains 1841 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__bufinv_16 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__bufinv_16 instances:   1                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o2111ai_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o2111ai_2 instances:   4                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a41o_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a41o_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a31o_2 instances: \u001b[1;36m36\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a31o_2 instances:  36                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21o_2 instances: \u001b[1;36m57\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21o_2 instances:  57                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__clkbuf_16 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__clkbuf_16 instances:   5                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o31ai_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o31ai_2 instances:   3                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4_2 instances:   1                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a31oi_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a31oi_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand4_2 instances: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand4_2 instances:  38                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a2bb2o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a2bb2o_2 instances:   4                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and3b_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and3b_2 instances:   2                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__xor2_2 instances: \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__xor2_2 instances: 107                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_ef_sc_hd__decap_12 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_ef_sc_hd__decap_12 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__dfrtp_2 instances: \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__dfrtp_2 instances:  32                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and4_2 instances: \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and4_2 instances:  30                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__inv_2 instances: \u001b[1;36m29\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__inv_2 instances:  29                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__inv_4 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__inv_4 instances:   1                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or3_2 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or3_2 instances:  25                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand3_2 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand3_2 instances:  25                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21ba_2 instances: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21ba_2 instances:  11                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and2b_2 instances: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and2b_2 instances:  38                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21boi_2 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21boi_2 instances:   6                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21bo_2 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21bo_2 instances:  15                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__clkinv_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__clkinv_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and3_2 instances: \u001b[1;36m100\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and3_2 instances: 100                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a2111o_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a2111o_2 instances:   2                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_3 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_3 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_4 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_4 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_6 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_6 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_8 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_8 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or2_2 instances: \u001b[1;36m158\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or2_2 instances: 158                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand2_2 instances: \u001b[1;36m266\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand2_2 instances: 266                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor4b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o311ai_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o311ai_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand3b_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand3b_2 instances:   3                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__mux2_1 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__mux2_1 instances:   2                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a211oi_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a211oi_2 instances:   3                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and2_2 instances: \u001b[1;36m112\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and2_2 instances: 112                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4b_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o32a_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o32a_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__xnor2_2 instances: \u001b[1;36m162\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__xnor2_2 instances: 162                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor3b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor3b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o221a_2 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o221a_2 instances:   5                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21bai_2 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21bai_2 instances:   8                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o211a_2 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o211a_2 instances:   8                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand2b_2 instances: \u001b[1;36m40\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand2b_2 instances:  40                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a311oi_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a311oi_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a221o_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a221o_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a211o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a211o_2 instances:   4                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o2111a_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o2111a_2 instances:   4                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or3b_2 instances: \u001b[1;36m20\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or3b_2 instances:  20                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4bb_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4bb_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor3_2 instances: \u001b[1;36m17\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor3_2 instances:  17                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a32o_2 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a32o_2 instances:  15                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a22o_2 instances: \u001b[1;36m71\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a22o_2 instances:  71                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o31a_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o31a_2 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21a_2 instances: \u001b[1;36m51\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21a_2 instances:  51                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o311a_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o311a_2 instances:   2                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a22oi_2 instances: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a22oi_2 instances:  11                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and4b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21ai_2 instances: \u001b[1;36m48\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21ai_2 instances:  48                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__tapvpwrvgnd_1 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__tapvpwrvgnd_1 instances:   1                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21oi_2 instances: \u001b[1;36m73\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21oi_2 instances:  73                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a311o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a311o_2 instances:   4                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__fill_1 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__fill_1 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__fill_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__fill_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o211ai_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o211ai_2 instances:   2                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor2_2 instances: \u001b[1;36m156\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor2_2 instances: 156                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m1910\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 1910 nets.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Contents of circuit \u001b[1;36m2\u001b[0m: Circuit: \u001b[32m'tapeout_vedic_mac_16'\u001b[0m \n" + ], + "text/html": [ + "
Contents of circuit 2:  Circuit: 'tapeout_vedic_mac_16'                                                            \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit tapeout_vedic_mac_16 contains \u001b[1;36m1841\u001b[0m device instances. \n" + ], + "text/html": [ + "
Circuit tapeout_vedic_mac_16 contains 1841 device instances.                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__bufinv_16 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__bufinv_16 instances:   1                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o2111ai_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o2111ai_2 instances:   4                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a41o_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a41o_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a31o_2 instances: \u001b[1;36m36\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a31o_2 instances:  36                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21o_2 instances: \u001b[1;36m57\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21o_2 instances:  57                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__clkbuf_16 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__clkbuf_16 instances:   5                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o31ai_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o31ai_2 instances:   3                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4_2 instances:   1                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a31oi_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a31oi_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand4_2 instances: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand4_2 instances:  38                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a2bb2o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a2bb2o_2 instances:   4                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and3b_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and3b_2 instances:   2                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__xor2_2 instances: \u001b[1;36m107\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__xor2_2 instances: 107                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_ef_sc_hd__decap_12 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_ef_sc_hd__decap_12 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__dfrtp_2 instances: \u001b[1;36m32\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__dfrtp_2 instances:  32                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and4_2 instances: \u001b[1;36m30\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and4_2 instances:  30                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__inv_2 instances: \u001b[1;36m29\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__inv_2 instances:  29                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__inv_4 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__inv_4 instances:   1                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or3_2 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or3_2 instances:  25                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand3_2 instances: \u001b[1;36m25\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand3_2 instances:  25                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21ba_2 instances: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21ba_2 instances:  11                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and2b_2 instances: \u001b[1;36m38\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and2b_2 instances:  38                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21boi_2 instances: \u001b[1;36m6\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21boi_2 instances:   6                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21bo_2 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21bo_2 instances:  15                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__clkinv_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__clkinv_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and3_2 instances: \u001b[1;36m100\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and3_2 instances: 100                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a2111o_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a2111o_2 instances:   2                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_3 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_3 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_4 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_4 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_6 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_6 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__decap_8 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__decap_8 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or2_2 instances: \u001b[1;36m158\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or2_2 instances: 158                                                                       \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand2_2 instances: \u001b[1;36m266\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand2_2 instances: 266                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor4b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o311ai_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o311ai_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand3b_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand3b_2 instances:   3                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__mux2_1 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__mux2_1 instances:   2                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and2_2 instances: \u001b[1;36m112\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and2_2 instances: 112                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a211oi_2 instances: \u001b[1;36m3\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a211oi_2 instances:   3                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4b_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o32a_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o32a_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__xnor2_2 instances: \u001b[1;36m162\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__xnor2_2 instances: 162                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor3b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor3b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o221a_2 instances: \u001b[1;36m5\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o221a_2 instances:   5                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21bai_2 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21bai_2 instances:   8                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o211a_2 instances: \u001b[1;36m8\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o211a_2 instances:   8                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nand2b_2 instances: \u001b[1;36m40\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nand2b_2 instances:  40                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a311oi_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a311oi_2 instances:   1                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a221o_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a221o_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a211o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a211o_2 instances:   4                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o2111a_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o2111a_2 instances:   4                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or3b_2 instances: \u001b[1;36m20\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or3b_2 instances:  20                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__or4bb_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__or4bb_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor3_2 instances: \u001b[1;36m17\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor3_2 instances:  17                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a32o_2 instances: \u001b[1;36m15\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a32o_2 instances:  15                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a22o_2 instances: \u001b[1;36m71\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a22o_2 instances:  71                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o31a_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o31a_2 instances:   4                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21a_2 instances: \u001b[1;36m51\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21a_2 instances:  51                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o311a_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o311a_2 instances:   2                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a22oi_2 instances: \u001b[1;36m11\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a22oi_2 instances:  11                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__and4b_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__and4b_2 instances:   1                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__tapvpwrvgnd_1 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__tapvpwrvgnd_1 instances:   1                                                               \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o21ai_2 instances: \u001b[1;36m48\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o21ai_2 instances:  48                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a21oi_2 instances: \u001b[1;36m73\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a21oi_2 instances:  73                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__a311o_2 instances: \u001b[1;36m4\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__a311o_2 instances:   4                                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__fill_1 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__fill_1 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__fill_2 instances: \u001b[1;36m1\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__fill_2 instances:   1                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__o211ai_2 instances: \u001b[1;36m2\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__o211ai_2 instances:   2                                                                    \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Class: sky130_fd_sc_hd__nor2_2 instances: \u001b[1;36m156\u001b[0m \n" + ], + "text/html": [ + "
Class: sky130_fd_sc_hd__nor2_2 instances: 156                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit contains \u001b[1;36m1910\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit contains 1910 nets.                                                                                        \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit \u001b[1;36m1\u001b[0m contains \u001b[1;36m1841\u001b[0m devices, Circuit \u001b[1;36m2\u001b[0m contains \u001b[1;36m1841\u001b[0m devices. \n" + ], + "text/html": [ + "
Circuit 1 contains 1841 devices, Circuit 2 contains 1841 devices.                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuit \u001b[1;36m1\u001b[0m contains \u001b[1;36m1910\u001b[0m nets, Circuit \u001b[1;36m2\u001b[0m contains \u001b[1;36m1910\u001b[0m nets. \n" + ], + "text/html": [ + "
Circuit 1 contains 1910 nets,    Circuit 2 contains 1910 nets.                                                     \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " \n" + ], + "text/html": [ + "
                                                                                                                   \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Final result: \n" + ], + "text/html": [ + "
Final result:                                                                                                      \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Circuits match uniquely. \n" + ], + "text/html": [ + "
Circuits match uniquely.                                                                                           \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + ". \n" + ], + "text/html": [ + "
.                                                                                                                  \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Logging to file \u001b[32m\"/content/openlane_run/34-netgen-lvs/reports/lvs.netgen.rpt\"\u001b[0m disabled \n" + ], + "text/html": [ + "
Logging to file \"/content/openlane_run/34-netgen-lvs/reports/lvs.netgen.rpt\" disabled                              \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "LVS Done. \n" + ], + "text/html": [ + "
LVS Done.                                                                                                          \n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/markdown": "#### Time Elapsed: 4.07s\n" + }, + "metadata": {}, + "execution_count": 52 + } + ], + "source": [ + "# DRC\n", + "print(\"Running DRC...\")\n", + "run_step(\"Magic.DRC\", show=False)\n", + "\n", + "# LVS\n", + "print(\"Running LVS...\")\n", + "run_step(\"Magic.SpiceExtraction\", show=False)\n", + "run_step(\"Netgen.LVS\", show=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AX_Q-7RjeY0t" + }, + "source": [ + "## 5. Conclusion\n", + "\n", + "This notebook successfully completed:\n", + "- Functional simulation of the 16‑bit Vedic MAC.\n", + "- Full RTL‑to‑GDS flow using OpenLane 2 and Sky130 PDK.\n", + "- DRC/LVS verification.\n", + "\n", + "\n", + "The design is ready for tape‑out." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CzUkx3FoeY0t" + }, + "source": [ + "## 6. License\n", + "\n", + "```\n", + "Copyright 2026 Kamalesh E\n", + "\n", + "Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "you may not use this file except in compliance with the License.\n", + "You may obtain a copy of the License at\n", + "\n", + " http://www.apache.org/licenses/LICENSE-2.0\n", + "\n", + "Unless required by applicable law or agreed to in writing, software\n", + "distributed under the License is distributed on an \"AS IS\" BASIS,\n", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", + "See the License for the specific language governing permissions and\n", + "limitations under the License.\n", + "```" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + }, + "colab": { + "provenance": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git "a/VLSI26/submitted_notebooks/16\342\200\221bit_vedic_multiplier_MAC_with_security_key/Readme.md" "b/VLSI26/submitted_notebooks/16\342\200\221bit_vedic_multiplier_MAC_with_security_key/Readme.md" new file mode 100644 index 000000000..1d74e2ba1 --- /dev/null +++ "b/VLSI26/submitted_notebooks/16\342\200\221bit_vedic_multiplier_MAC_with_security_key/Readme.md" @@ -0,0 +1,50 @@ +# 16‑bit Vedic Multiplier MAC with Security Key + +**Author:** Kamalesh E +**License:** Apache 2.0 +**Submission:** IEEE SSCS Code‑a‑Chip VLSI'26 Travel Grant Award + +--- + +## About the Author + +Kamalesh E is an **IEEE Undergraduate Student Member** at **Government College of Technology, Coimbatore**, India. His interests lie in **digital VLSI design**, **computer architecture**, and **open‑source EDA tools**. This project was developed as part of his exploration into reproducible ASIC design flows and hardware security. + +--- + +## Overview + +This repository contains a **fully reproducible Jupyter notebook** that implements a 16‑bit multiplier‑accumulator (MAC) based on the **Vedic mathematics algorithm *Urdhva Tiryagbhyam***. The design includes a hardware security key feature and is taped‑out using **OpenLane 2** with the **SkyWater 130 nm open PDK**. + +### What’s Inside + +| File | Description | +|------|-------------| +| `16bit_Vedic_MAC_with_Security_Key.ipynb` | Main Jupyter notebook with RTL, simulation, synthesis, place & route, GDS generation, DRC/LVS, and metric extraction. | +| `pin_order.cfg` (optional) | Custom pin placement file (not required for default flow). | + +### Quick Run (Google Colab) + +1. Go to [Google Colab](https://colab.research.google.com/). +2. Click **File → Upload notebook** and select the `.ipynb` file. +3. Run all cells from top to bottom. + +> The free Colab tier may run out of memory during detailed routing. If this occurs, you can run the flow locally (Linux recommended) and embed a GDS screenshot – the competition FAQ explicitly allows this. + +### 🖥️ Running Locally (Linux) + +1. Install **Nix** with flakes enabled (see [OpenLane docs](https://openlane2.readthedocs.io/en/stable/getting_started/common/nix_installation/index.html)). +2. Launch Jupyter and open the notebook – all dependencies will be installed automatically. + +### Key Results + +- **Functional simulation:** All tests pass (Icarus Verilog) +- **DRC/LVS:** Clean (Magic & Netgen) + +### License + +This work is licensed under the **Apache License 2.0**. See the notebook’s final cell for the full license text. + +--- + +*For questions or collaboration, feel free to open an issue or contact the author.*