From 4dacc1510c0d4e7bbfba8570f3449167a594abdb Mon Sep 17 00:00:00 2001 From: Mehdi Saligane Date: Wed, 8 Feb 2023 04:40:16 +0000 Subject: [PATCH 1/4] Notebook template + Update to How to submit our Notebook Signed-off-by: Mehdi Saligane --- HOWTO.md | 21 + template_notebook_to_follow.ipynb | 1036 +++++++++++++++++++++++++++++ 2 files changed, 1057 insertions(+) create mode 100644 template_notebook_to_follow.ipynb diff --git a/HOWTO.md b/HOWTO.md index 885154b..97a2e1a 100644 --- a/HOWTO.md +++ b/HOWTO.md @@ -7,6 +7,27 @@ Create a Jupyter notebook detailing the main ideas of your design. You can choos **Note: It is not necessary to create a layout at the proposal stage**. - Create a pull request for your proposal notebook submission by the deadline stated below. Refer to the “how to submit” instructions in the Chipathon repository for further details. +## How to Submit your Notebook +Participants are required to send their [GitHub Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) to this repository by: May 1, 2023, 11:59 PM Pacific Time. + +**_Note_:** Please do not make any modifications to your Pull Request after the above deadline. All PRs will be merged after the deadline is passed. + +Please use the following [Notebook Template](template_notebook_to_follow.ipynb) for your submission. + +The following Notebooks could be used as a reference: + - A [temperature sensor generator](https://github.com/idea-fasoc/OpenFASOC/blob/main/docs/source/notebooks/temp-sense-gen/temp_sense_genCollab.ipynb) + - An [inverter](https://developers.google.com/silicon/guides/digital-inverter-openlane) + - More silicon Notebooks hosted by [CHIPS Alliance](https://github.com/chipsalliance/silicon-notebooks) + +Pull Requests are expected to be placed in the [initial_notebooks_2023 folder](initial_notebooks_2023/submitted_notebooks). To help with the review process, please follow the guidelines below: + - Create a **subfolder** inside [initial_notebooks_2023 folder](initial_notebooks_2023/submitted_notebooks) which includes Notebooks with your project name and any files or README that are needed. + - Spell out your team members at the top of your Notebook. + - Add References to your work which includes Notebooks you have reused. + - Feel free to open GitHub issues if you have any questions regarding this process. + - Add tools versions that you recommend to run your Notebook. + +Please refer to this general documentation on how to start a [Colab](https://colab.research.google.com/) or [Jupyter](https://jupyter-notebook.readthedocs.io/) Notebooks. + ## Schedule - Info session: March 9, 2023, 8:00 AM Pacific Time (meeting link to follow). - Proposal deadline: May 1, 2023, 11:59 PM Pacific Time diff --git a/template_notebook_to_follow.ipynb b/template_notebook_to_follow.ipynb new file mode 100644 index 0000000..e985c29 --- /dev/null +++ b/template_notebook_to_follow.ipynb @@ -0,0 +1,1036 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "aK2t7aSWNojQ" + }, + "source": [ + "# Title: Template for Simple Simulations in GF180MCU Analysing a VGS sweep\n", + "\n", + "\n", + "```\n", + "SSCS TC-OSE Team, February 2023\n", + "SPDX-License-Identifier: Apache-2.0\n", + "```\n", + "\n", + "\n", + "|Name|Email|Affiliation|IEEE Member|SSCS Member|\n", + "|:--:|:--:|:----------:|:----------:|:----------:|\n", + "|Author 1|Email1|Affiliation 1|Yes/No|Yes/No|\n", + "|Author 2|Email2|Affiliation 2|Yes/No|Yes/No|\n", + "|Author 3|Email3|Affiliation 3|Yes/No|Yes/No|\n", + "|Author 4 (Lead)
|Email4|Affiliation 4|Yes/No|Yes/No|" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "W7JQJy7mvn2w" + }, + "source": [ + "**_Abstract_** - This electronic document is a “live” template and already defines the components of your paper [title, text, heads,\n", + "etc.] in its style sheet. *\n", + "\n", + "**_Key words_** - component; formatting; style; styling; insert (key words)\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tool Installation\n", + "\n", + "This is where you need to install your tools. We provide here an example where conda environment is being installed and then Ngspice for simulations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "**_Tool setup adopted from @proppy and @bmurmann (see this [Colab notebook](https://colab.research.google.com/gist/proppy/a0c5ed3e28e942f1621200dcf67bad5a/sky130-pyspice-playground.ipynb#scrollTo=q0XHBAt1jGmQ))_**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "@bmurmann (see this [Colab notebook](https://colab.research.google.com/gist/proppy/a0c5ed3e28e942f1621200dcf67bad5a/sky130-pyspice-playground.ipynb#scrollTo=q0XHBAt1jGmQ))_**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 141 + }, + "id": "5dHhq5m6wTI2", + "outputId": "e5b6b3e4-b4f1-4f4f-88c3-b1f294e03d0c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + " Building wheel for condacolab (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n", + "\u001b[0m✨🍰✨ Everything looks OK!\n" + ] + } + ], + "source": [ + "#@title Bootstrap conda environment {display-mode: \"form\"}\n", + "#@markdown - Click the ▷ button to initialize the conda-eda environment.\n", + "#@markdown - Wait for the installation to complete\n", + "#@markdown - Click the `Restart Kernel` button.\n", + "%pip install -q https://github.com/conda-incubator/condacolab/archive/28521d7c5c494dd6377bb072d97592e30c44609c.tar.gz\n", + "import condacolab\n", + "\n", + "condacolab.install(restart_kernel=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "U6rf4KBdwsJ5" + }, + "source": [ + "### Install dependencies\n", + "\n", + "- Wait for the kernel restart to complete.\n", + "- Click the ▷ button below to run the hidden cells to complete the setup." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aKoPD8cKw2UL", + "outputId": "8d1db9b2-5dda-42c8-fe00-2e7a8d0b8bff" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwriting environment.yml\n" + ] + } + ], + "source": [ + "%%writefile environment.yml\n", + "channels:\n", + " - conda-forge\n", + "dependencies:\n", + " - ngspice" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "JBbUOsEPyTuU", + "outputId": "4cd6e0e8-4e70-4a70-b7a1-5ada626a03c6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[?25l\u001b[2K\u001b[0G[+] 0.0s\n", + "\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.1s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.2s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.3s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.4s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.5s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.6s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.7s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.8s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 0.9s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.0s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.1s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.2s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.3s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.4s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.5s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.6s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.7s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.8s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 1.9s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.0s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.1s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.2s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.3s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch 100%\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.4s\n", + "conda-forge/linux-64 ⣾ \n", + "conda-forge/noarch 100%\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[0Gconda-forge/noarch \n", + "[+] 2.5s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.6s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.7s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.8s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 2.9s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.0s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.1s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.2s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.3s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.4s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.5s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.6s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.7s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.8s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 3.9s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.0s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.1s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.2s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.3s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.4s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.5s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.6s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.7s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.8s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 4.9s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.0s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.1s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.2s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.3s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.4s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.5s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.6s\n", + "conda-forge/linux-64 ⣾ \u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.7s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.8s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 5.9s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 6.0s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 6.1s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 6.2s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 6.3s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 6.4s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 6.5s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 6.6s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0G[+] 6.7s\n", + "conda-forge/linux-64 100%\u001b[2K\u001b[1A\u001b[2K\u001b[0Gconda-forge/linux-64 \n", + "\u001b[?25h\n", + "\n", + "Looking for: ['ngspice']\n", + "\n", + "\n", + "\n", + " Pinned packages:\n", + "\n", + " - python 3.8.*\n", + " - python_abi 3.8.* *cp38*\n", + " - cudatoolkit 11.2.*\n", + "\n", + "\n", + "Transaction\n", + "\n", + " Prefix: /usr/local\n", + "\n", + " All requested packages already installed\n", + "\n", + "\u001b[?25l\u001b[2K\u001b[0G\u001b[?25hPreparing transaction: - \b\bdone\n", + "Verifying transaction: | \b\bdone\n", + "Executing transaction: - \b\bdone\n", + "#\n", + "# To activate this environment, use\n", + "#\n", + "# $ conda activate base\n", + "#\n", + "# To deactivate an active environment, use\n", + "#\n", + "# $ conda deactivate\n", + "\n", + "Retrieving notices: ...working... done\n" + ] + } + ], + "source": [ + "!mamba env update -n base -f environment.yml" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Uc5tBh5D4FVT", + "outputId": "d82509a8-2051-4d20-ebc3-841dbce1898d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fatal: destination path 'globalfoundries-pdk-libs-gf180mcu_fd_pr' already exists and is not an empty directory.\n" + ] + } + ], + "source": [ + "!git clone https://github.com/google/globalfoundries-pdk-libs-gf180mcu_fd_pr.git" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "Qnn9H_oowEgQ" + }, + "source": [ + "I. Introduction\n", + "\n", + "Please Introduce your idea here. Feel free to add subsections and figures." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "II. Implementation Details of your Idea\n", + "\n", + "This is where you should describe your idea in more details. Circuit diagrams, Flow chart, Simulations, etc.. are expected.\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Example of a Simulation Flow using Ngspice**" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "J0k4CykG8wui", + "outputId": "48e6bafb-5334-4d30-8373-7786a66f94b4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwriting .spiceinit\n" + ] + } + ], + "source": [ + "%%writefile .spiceinit\n", + "set ngbehavior=hs" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "d4381uZZ1dbj", + "outputId": "eb42f2c2-3002-498a-e21a-5d4f3a799c66" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwriting netlist.spice\n" + ] + } + ], + "source": [ + "%%writefile netlist.spice\n", + "* PMOS VGS sweep\n", + "\n", + ".include \"globalfoundries-pdk-libs-gf180mcu_fd_pr/models/ngspice/design.ngspice\"\n", + ".lib \"globalfoundries-pdk-libs-gf180mcu_fd_pr/models/ngspice/sm141064.ngspice\" typical\n", + "\n", + ".param width=10u\n", + "X1 vdp vgp 0 vbp pmos_3p3 w=width l=0.28u AD={width*0.24u} AS={width*0.24u} PD={2*(width + 0.24u)} PS={2*(width + 0.24u)}\n", + "vsdp 0 vdp dc 0.9 \n", + "vsgp 0 vgp dc 0.9 \n", + "vsbp 0 vbp dc 0\n", + ".op\n", + ".option post nomod\n", + ".end\n", + "\n", + ".control\n", + "save all @m.x1.m0[id] @m.x1.m0[gm] @m.x1.m0[cgg] \n", + "dc vsgp 0 1.8 0.01\n", + "display\n", + "wrdata output.txt @m.x1.m0[id] @m.x1.m0[gm] @m.x1.m0[cgg]\n", + ".endc" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6Qs0DbgP02vN", + "outputId": "145fa0f0-4767-411e-8772-73280fe57c2d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Note: Compatibility modes selected: hs\n", + "\n", + "Warning: m=xx on .subckt line will override multiplier m hierarchy!\n", + "\n", + "\n", + "Circuit: * pmos vgs sweep\n", + "\n", + "Doing analysis at TEMP = 27.000000 and TNOM = 27.000000\n", + "\n", + "\n", + "No. of Data Rows : 181\n", + "Here are the vectors currently active:\n", + "\n", + "Title: * pmos vgs sweep\n", + "Name: dc1 (DC transfer characteristic)\n", + "Date: Fri Jan 6 01:06:28 2023\n", + "\n", + " @m.x1.m0[cgg] : capacitance, real, 181 long\n", + " @m.x1.m0[gm] : admittance, real, 181 long\n", + " @m.x1.m0[id] : current, real, 181 long\n", + " v-sweep : voltage, real, 181 long [default scale]\n", + " vbp : voltage, real, 181 long\n", + " vdp : voltage, real, 181 long\n", + " vgp : voltage, real, 181 long\n", + " vsbp#branch : current, real, 181 long\n", + " vsdp#branch : current, real, 181 long\n", + " vsgp#branch : current, real, 181 long\n", + "Doing analysis at TEMP = 27.000000 and TNOM = 27.000000\n", + "\n", + "\n", + "No. of Data Rows : 1\n", + "\tNode Voltage\n", + "\t---- -------\n", + "\t----\t-------\n", + "\tvbp 0.000000e+00\n", + "\tvgp -9.00000e-01\n", + "\tvdp -9.00000e-01\n", + "\n", + "\tSource\tCurrent\n", + "\t------\t-------\n", + "\n", + "\t@m.x1.m0[id] 2.829225e-05\n", + "\tvsdp#branch -2.82922e-05\n", + "\tvsgp#branch 0.000000e+00\n", + "\tvsbp#branch 9.008252e-13\n", + "\n", + " BSIM4v5: Berkeley Short Channel IGFET Model-4\n", + " device m.x1.m0\n", + " model pmos_3p3.8\n", + " l 2.8e-07\n", + " w 1e-05\n", + " m 1\n", + " nf 1\n", + " sa 0\n", + " sb 0\n", + " sd 0\n", + " sca 0\n", + " scb 0\n", + " scc 0\n", + " sc 0\n", + " min 0\n", + " ad 2.4e-12\n", + " as 2.4e-12\n", + " pd 2.048e-05\n", + " ps 2.048e-05\n", + " nrd 0\n", + " nrs 0\n", + " off 0\n", + " rbdb 50\n", + " rbsb 50\n", + " rbpb 50\n", + " rbps 50\n", + " rbpd 50\n", + " delvto -0.00173689\n", + " xgw 0\n", + " ngcon 1\n", + " trnqsmod 0\n", + " acnqsmod 0\n", + " rbodymod 0\n", + " rgatemod 0\n", + " geomod 0\n", + " rgeomod 0\n", + " gmbs 8.86307e-05\n", + " gm 0.000266785\n", + " gds 5.90081e-06\n", + " vdsat 0.191771\n", + " vth 0.735876\n", + " id 2.82922e-05\n", + " ibd -9.00825e-13\n", + " ibs 0\n", + " gbd 1.00168e-12\n", + " gbs 1.00054e-12\n", + " isub 1.8697e-19\n", + " igidl 0\n", + " igisl 0\n", + " igs 0\n", + " igd 0\n", + " igb 0\n", + " igcs 0\n", + " igcd 0\n", + " vbs -0\n", + " vgs 0.9\n", + " vds 0.9\n", + " cgg 9.14344e-15\n", + " cgs -6.86794e-15\n", + " cgd 5.70583e-17\n", + " cbg -1.64522e-15\n", + " cbd 2.68481e-17\n", + " cbs -3.18837e-15\n", + " cdg -3.00227e-15\n", + " cdd -3.18612e-17\n", + " cds 4.02489e-15\n", + " csg -4.49594e-15\n", + " csd -5.20452e-17\n", + " css 6.03141e-15\n", + " cgb -2.33256e-15\n", + " cdb -9.90754e-16\n", + " csb -1.48343e-15\n", + " cbb 4.80674e-15\n", + " capbd 7.22884e-15\n", + " capbs 8.65386e-15\n", + " qg 1.18221e-14\n", + " qb -9.40484e-15\n", + " qd -9.67557e-16\n", + " qs -1.44967e-15\n", + " qinv 1.3522e-15\n", + " qdef -0\n", + " gcrg 0\n", + " gtau 0\n", + "\n", + " Vsource: Independent voltage source\n", + " device vsbp vsgp vsdp\n", + " dc 0 0.9 0.9\n", + " acmag 0 0 0\n", + " pulse - - -\n", + " sin - - -\n", + " exp - - -\n", + " pwl - - -\n", + " sffm - - -\n", + " am - - -\n", + " trnoise - - -\n", + " trrandom - - -\n", + " portnum 0 0 0\n", + " z0 0 0 0\n", + " pwr 0 0 0\n", + " freq 0 0 0\n", + " phase 0 0 0\n", + " i 9.00825e-13 0 -2.82922e-05\n", + " p 0 0 -2.5463e-05\n", + "\n", + "\n", + "Total analysis time (seconds) = 0.002\n", + "\n", + "Total elapsed time (seconds) = 0.052 \n", + "\n", + "Total DRAM available = 12985.539 MB.\n", + "DRAM currently available = 8757.086 MB.\n", + "Maximum ngspice program size = 55.383 MB.\n", + "Current ngspice program size = 18.945 MB.\n", + "\n", + "Shared ngspice pages = 10.492 MB.\n", + "Text (code) pages = 5.336 MB.\n", + "Stack = 0 bytes.\n", + "Library pages = 24.625 MB.\n", + "\n" + ] + } + ], + "source": [ + "!ngspice -b netlist.spice" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + }, + "id": "xh5L-L-KaM9A", + "outputId": "66e3b0d8-48a8-4403-c703-7e3e8cb51875" + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
vsggmvsg1idvsg2cgggm_idf_T
00.002.219625e-140.005.974883e-130.005.093935e-150.0371496.934998e-01
10.012.905256e-140.017.820429e-130.015.070913e-150.0371509.118396e-01
20.023.802666e-140.021.023600e-120.025.048310e-150.0371501.198843e+00
30.034.977265e-140.031.339763e-120.035.026129e-150.0371501.576076e+00
40.046.514662e-140.041.753572e-120.045.004374e-150.0371512.071869e+00
...........................
1761.765.628349e-041.768.072470e-041.769.708961e-150.6972289.226318e+09
1771.775.709094e-041.778.076281e-041.779.713970e-150.7068969.353854e+09
1781.785.789869e-041.788.078324e-041.789.719145e-150.7167179.481145e+09
1791.795.870655e-041.798.078594e-041.799.724496e-150.7266939.608146e+09
1801.805.951435e-041.808.077095e-041.809.730033e-150.7368299.734811e+09
\n", + "

181 rows × 8 columns

\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + " vsg gm vsg1 id vsg2 cgg gm_id \\\n", + "0 0.00 2.219625e-14 0.00 5.974883e-13 0.00 5.093935e-15 0.037149 \n", + "1 0.01 2.905256e-14 0.01 7.820429e-13 0.01 5.070913e-15 0.037150 \n", + "2 0.02 3.802666e-14 0.02 1.023600e-12 0.02 5.048310e-15 0.037150 \n", + "3 0.03 4.977265e-14 0.03 1.339763e-12 0.03 5.026129e-15 0.037150 \n", + "4 0.04 6.514662e-14 0.04 1.753572e-12 0.04 5.004374e-15 0.037151 \n", + ".. ... ... ... ... ... ... ... \n", + "176 1.76 5.628349e-04 1.76 8.072470e-04 1.76 9.708961e-15 0.697228 \n", + "177 1.77 5.709094e-04 1.77 8.076281e-04 1.77 9.713970e-15 0.706896 \n", + "178 1.78 5.789869e-04 1.78 8.078324e-04 1.78 9.719145e-15 0.716717 \n", + "179 1.79 5.870655e-04 1.79 8.078594e-04 1.79 9.724496e-15 0.726693 \n", + "180 1.80 5.951435e-04 1.80 8.077095e-04 1.80 9.730033e-15 0.736829 \n", + "\n", + " f_T \n", + "0 6.934998e-01 \n", + "1 9.118396e-01 \n", + "2 1.198843e+00 \n", + "3 1.576076e+00 \n", + "4 2.071869e+00 \n", + ".. ... \n", + "176 9.226318e+09 \n", + "177 9.353854e+09 \n", + "178 9.481145e+09 \n", + "179 9.608146e+09 \n", + "180 9.734811e+09 \n", + "\n", + "[181 rows x 8 columns]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import math\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "df = pd.read_csv(\"output.txt\", delim_whitespace=True, header=None)\n", + "df.columns = [\"vsg\", \"gm\", \"vsg1\", \"id\", \"vsg2\", \"cgg\"]\n", + "df['gm_id'] = df['gm']/df['id']\n", + "df['f_T'] = df['gm']/df['cgg']/2/math.pi\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 280 + }, + "id": "rCTaJreri9ke", + "outputId": "3e851d0d-0eb0-4312-fe7e-dc6bd981a778" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df.plot(x=\"vsg\", y=\"id\", logy=True, grid=True)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 279 + }, + "id": "QtT18v6ElmwL", + "outputId": "d84cb317-b680-453e-9a7a-392a90aeb93f" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df.plot(x=\"vsg\", y=\"gm_id\", grid=True)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 290 + }, + "id": "fuCOaerRn2EV", + "outputId": "c2cc3db4-b5b3-417c-f943-89587b8c5b0c" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df.plot(x=\"vsg\", y=\"f_T\", grid=True)\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "III. Summary of your Idea\n", + "\n", + "This is where you summarize your work. Comparison tables and a description of your expected results should be listed here." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "IV. Planification and Tasks\n", + "\n", + "Planning and breakdown of tasks are usually helpful for a successful project. Good Luck!" + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3.9.13 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.9.13" + }, + "vscode": { + "interpreter": { + "hash": "397704579725e15f5c7cb49fe5f0341eb7531c82d19f2c29d197e8b64ab5776b" + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From 9302ef11545f076371660f3c15ebf62ac6131735 Mon Sep 17 00:00:00 2001 From: Mehdi Saligane Date: Wed, 8 Feb 2023 04:45:20 +0000 Subject: [PATCH 2/4] Notebook template + Update to How to submit our Notebook Signed-off-by: Mehdi Saligane --- template_notebook_to_follow.ipynb | 7 ------- 1 file changed, 7 deletions(-) diff --git a/template_notebook_to_follow.ipynb b/template_notebook_to_follow.ipynb index e985c29..1bcb322 100644 --- a/template_notebook_to_follow.ipynb +++ b/template_notebook_to_follow.ipynb @@ -65,13 +65,6 @@ "**_Tool setup adopted from @proppy and @bmurmann (see this [Colab notebook](https://colab.research.google.com/gist/proppy/a0c5ed3e28e942f1621200dcf67bad5a/sky130-pyspice-playground.ipynb#scrollTo=q0XHBAt1jGmQ))_**" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "@bmurmann (see this [Colab notebook](https://colab.research.google.com/gist/proppy/a0c5ed3e28e942f1621200dcf67bad5a/sky130-pyspice-playground.ipynb#scrollTo=q0XHBAt1jGmQ))_**" - ] - }, { "cell_type": "code", "execution_count": null, From 1cedce7eb7087a26ff651873648923a90a9bfeb8 Mon Sep 17 00:00:00 2001 From: Mehdi Saligane Date: Wed, 8 Feb 2023 04:47:41 +0000 Subject: [PATCH 3/4] Notebook template + Update to How to submit our Notebook Signed-off-by: Mehdi Saligane --- template_notebook_to_follow.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/template_notebook_to_follow.ipynb b/template_notebook_to_follow.ipynb index 1bcb322..bfd813b 100644 --- a/template_notebook_to_follow.ipynb +++ b/template_notebook_to_follow.ipynb @@ -318,7 +318,7 @@ "id": "Qnn9H_oowEgQ" }, "source": [ - "I. Introduction\n", + "## I. Introduction\n", "\n", "Please Introduce your idea here. Feel free to add subsections and figures." ] @@ -328,7 +328,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "II. Implementation Details of your Idea\n", + "## II. Implementation Details of your Idea\n", "\n", "This is where you should describe your idea in more details. Circuit diagrams, Flow chart, Simulations, etc.. are expected.\n", "\n" @@ -987,7 +987,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "III. Summary of your Idea\n", + "## III. Summary of your Idea\n", "\n", "This is where you summarize your work. Comparison tables and a description of your expected results should be listed here." ] @@ -997,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "IV. Planification and Tasks\n", + "## IV. Planification and Tasks\n", "\n", "Planning and breakdown of tasks are usually helpful for a successful project. Good Luck!" ] From 6c8cbd28d0c16ec9855c5ed25c598d971574013b Mon Sep 17 00:00:00 2001 From: Mehdi Saligane <48068702+msaligane@users.noreply.github.com> Date: Tue, 7 Feb 2023 23:48:41 -0500 Subject: [PATCH 4/4] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 48838fb..9786921 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ -    [Call for proposals](CALL.md) -    [How to participate](HOWTO.md) -    [Target specifications](SPECS.md) -    [Design tools](TOOLS.md) +    [Call for Proposals](CALL.md) +    [How to Participate](HOWTO.md) +    [Target Specifications](SPECS.md) +    [Design Tools](TOOLS.md)     [FAQ](FAQ.md)