├── .github └── workflows │ ├── ci.yml │ └── release.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── Chapter_00_Preparations └── c00_preparations.md ├── Chapter_01_Introduction ├── c01_lecture.md ├── c01_questions.md ├── c01_training_advanced.md ├── c01_training_bonus.md ├── c01_training_common.md └── pics_lecture │ ├── advanced.jpg │ ├── advanced.png │ ├── bonus.jpg │ ├── bonus.png │ ├── c01_cheatsheet.png │ ├── c01_cheatsheet_empty.odp │ ├── c01_cheatsheet_empty.pdf │ ├── c01_cheatsheet_empty.png │ ├── c05_cheatsheet.png │ ├── cheatsheet.jpg │ ├── cheatsheet.png │ ├── chip.jpg │ ├── chip.png │ ├── common.jpg │ ├── common.png │ ├── course_week.png │ ├── coursed_repo_structure.png │ ├── gds_klayout.png │ ├── gds_wikipedia.png │ ├── lecture.jpg │ ├── lecture.png │ ├── pics_os │ ├── cells_3dprint_1.png │ ├── cells_3dprint_2.png │ ├── cells_3dprint_3.png │ ├── inv_gdsviewer.png │ ├── inv_layers.png │ ├── inv_stl.png │ ├── maximo_1.png │ ├── maximo_2.png │ ├── maximo_3.png │ ├── maximo_4.png │ ├── tinytapeout_gds.png │ ├── webviewer_1.png │ ├── webviewer_2.png │ └── webviewer_3.png │ ├── questions.jpg │ ├── questions.png │ ├── rtl_to_gds.odg │ ├── rtl_to_gds.pdf │ ├── rtl_to_gds.png │ ├── rtl_to_gds_1.odg │ ├── rtl_to_gds_1.pdf │ ├── rtl_to_gds_1.png │ ├── rtl_to_gds_2.odg │ ├── rtl_to_gds_2.png │ ├── rtl_wikipedia.png │ ├── screenshot_advanced.png │ ├── screenshot_bonus.png │ ├── screenshot_common.png │ ├── training.jpg │ └── training.png ├── Chapter_02_OpenROAD_tools ├── c02_lecture.md ├── c02_questions.md ├── c02_training_advanced.md ├── c02_training_common.md └── pics_lecture │ ├── eda_course.png │ ├── filler_cells_gds.png │ ├── flow_01.png │ ├── flow_02.png │ ├── history_darpa.png │ ├── history_darpa_idea.png │ ├── history_looking_forward.png │ ├── history_openroad_docs_1.png │ ├── history_openroad_docs_2.png │ ├── history_or_1.png │ ├── openroad_courses.png │ ├── slack_channels.png │ ├── slack_website.png │ └── za_terminology.png ├── Chapter_03_Verilog ├── c03_lecture.md ├── c03_questions.md ├── c03_training_advanced.md ├── c03_training_common.md └── pics_lecture │ ├── always_demo_ok.png │ ├── always_demo_wrong.png │ ├── define_demo.png │ ├── define_demo_all.odg │ ├── define_demo_all.png │ ├── dut.odg │ ├── dut.png │ ├── feedback_logic.odg │ ├── feedback_logic.png │ ├── feedback_sequential.odg │ ├── feedback_sequential.png │ ├── freecnt.odg │ ├── freecnt.png │ ├── gtkwave.png │ ├── hsrm_logo.png │ ├── modulo_counter.odg │ ├── modulo_counter.pdf │ ├── modulo_counter.png │ ├── parameter_counter.pdf │ ├── parameter_counter.png │ └── synchronous_circuit_diagram.png ├── Chapter_04_OpenROAD_first_run ├── c04_lecture.md ├── c04_questions.md ├── c04_training_advanced.md ├── c04_training_bonus.md ├── c04_training_common.md └── pics_lecture │ ├── gds_gcd.png │ ├── gds_ibex.png │ ├── gds_lfsr.png │ ├── gds_masked_aes.png │ ├── gds_vga_clock.png │ └── makefile_flow_steps.png ├── Chapter_05_PDK ├── c05_cheatsheet.odp ├── c05_lecture.md ├── c05_questions.md ├── c05_training_advanced.md ├── c05_training_bonus.md ├── c05_training_common.md ├── pics_lecture │ ├── cell_gds_ao21.png │ ├── cell_schematic_ao21.png │ ├── gantt_0.png │ ├── issues_closed.png │ ├── issues_open.png │ ├── layer_stack_0.png │ ├── layout_rules.png │ ├── lydrc_klayout.png │ ├── lylvs_klayout.png │ ├── process_specs.png │ ├── pull_requests_closed.png │ ├── readme_0.png │ └── supported_tools.png └── pics_training │ ├── 01_25dviewer.png │ ├── 01_klayout.png │ ├── 02_klayout.png │ ├── 03_klayout.png │ ├── 04_klayout_01.png │ ├── 04_klayout_02.png │ ├── 05_klayout.png │ ├── 06_klayout.png │ ├── 08_klayout.odg │ └── 08_klayout.png ├── Chapter_06_OpenROAD_gui ├── c06_lecture.md ├── c06_questions.md ├── c06_training_common.md ├── pics_lecture │ ├── or_gui_area.png │ ├── or_gui_clock_tree.png │ ├── or_gui_drc_viewer.png │ ├── or_gui_heat_maps.png │ ├── or_gui_intro.png │ ├── or_gui_power.png │ ├── or_gui_ruler.png │ ├── or_gui_tcl_interface.png │ ├── or_gui_timing_report.png │ ├── or_gui_timing_slack.png │ ├── or_gui_view_layout.png │ └── or_gui_visualize_objects.png └── pics_trainings │ ├── ibex_clocktree.png │ ├── ibex_power_density.png │ ├── ibex_single_clock_path.png │ └── masked_aes_pins.png ├── Chapter_07_OpenROAD_flow_scripts ├── c07_lecture.md ├── c07_questions.md ├── c07_training_bonus.md ├── c07_training_common.md └── pics_lecture │ ├── design_config_variables.png │ ├── gds_masked_aes.png │ ├── masked_aes_metal_fill.png │ ├── masked_aes_sealring.png │ └── orfs_intro.png ├── Chapter_08_Tapeout ├── c08_lecture.md ├── c08_questions.md ├── c08_training_common.md ├── image.png └── pics_lecture │ ├── course_issues.png │ ├── design_data_directory_structure.png │ ├── drc_actions.png │ ├── masked_aes_workarounds.png │ ├── orfs_issues_ihp.png │ ├── orfs_prs.png │ ├── physical_constraints.png │ ├── project_directory_structure.png │ ├── submission_process.png │ ├── submission_process_detail.png │ └── tapeout_calendar.png ├── LICENSE ├── README.md ├── authors.md ├── build ├── all_slides.pdf ├── c00_preparations.pdf ├── c01_lecture.pdf ├── c01_questions.pdf ├── c01_training_advanced.pdf ├── c01_training_bonus.pdf ├── c01_training_common.pdf ├── c02_lecture.pdf ├── c02_questions.pdf ├── c02_training_advanced.pdf ├── c02_training_common.pdf ├── c03_lecture.pdf ├── c03_questions.pdf ├── c03_training_advanced.pdf ├── c03_training_common.pdf ├── c04_lecture.pdf ├── c04_questions.pdf ├── c04_training_advanced.pdf ├── c04_training_bonus.pdf ├── c04_training_common.pdf ├── c05_lecture.pdf ├── c05_questions.pdf ├── c05_training_advanced.pdf ├── c05_training_bonus.pdf ├── c05_training_common.pdf ├── c06_lecture.pdf ├── c06_questions.pdf ├── c06_training_common.pdf ├── c07_lecture.pdf ├── c07_questions.pdf ├── c07_training_bonus.pdf ├── c07_training_common.pdf ├── c08_lecture.pdf ├── c08_questions.pdf └── c08_training_common.pdf ├── generate_slides.sh ├── generate_slides_old.sh ├── icons ├── advanced.jpg ├── advanced.odg ├── advanced.png ├── bonus.jpg ├── bonus.odg ├── bonus.png ├── cheatsheet.jpg ├── cheatsheet.odg ├── cheatsheet.png ├── common.jpg ├── common.odg ├── common.png ├── lecture.jpg ├── lecture.odg ├── lecture.png ├── questions.jpg ├── questions.odg ├── questions.png ├── training.jpg ├── training.odg └── training.png ├── pandoc └── templates │ ├── default_mod.latex │ └── default_mod_old.latex └── pics ├── course_week.odp ├── course_week.pdf ├── course_week.png ├── qrcode_course_repo.png └── qrcode_course_repo.svg /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Build presentations 2 | 3 | # This workflow is triggered on pushes to the repository. 4 | on: 5 | push: 6 | branches: 7 | - main 8 | paths: 9 | - 'Chapter_00_Preparations/**.md' 10 | - 'Chapter_01_Introduction/**.md' 11 | - 'Chapter_02_Workflow/**.md' 12 | - 'Chapter_03_Design_and_example_pick/**.md' 13 | - 'Chapter_04_Openroad_first_run/**.md' 14 | - 'Chapter_05_PDK_Examination/**.md' 15 | - 'Chapter_06_Data_in_Openroad/**.md' 16 | - 'Chapter_07_LVS_and_DRC/**.md' 17 | - 'Chapter_08_Simulation_and_PPA/**.md' 18 | - 'Chapter_09_Scripting/**.md' 19 | - 'Chapter_10_GDS_and_Tapeout/**.md' 20 | workflow_dispatch: 21 | branches: 22 | - main 23 | 24 | jobs: 25 | build-pdfs: 26 | name: Build PDFs from Markdown files 27 | runs-on: ubuntu-latest 28 | steps: 29 | - uses: actions/checkout@v4 30 | 31 | - name: Install Pandoc 32 | uses: pandoc/actions/setup@v1 33 | with: 34 | version: 2.19 35 | 36 | - name: Convert '.md' files to '.pdf' 37 | uses: dante-ev/latex-action@latest 38 | with: 39 | entrypoint: ./generate_slides.sh 40 | args: --all 41 | 42 | - uses: actions/upload-artifact@v4 43 | with: 44 | path: build 45 | name: presentation-pdfs 46 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v[0-9]+.*' 7 | 8 | jobs: 9 | build-pdfs: 10 | name: Build PDFs from Markdown files 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | 15 | - name: Install Pandoc 16 | uses: pandoc/actions/setup@v1 17 | with: 18 | version: 2.19 19 | 20 | - name: Convert '.md' files to '.pdf' 21 | uses: dante-ev/latex-action@latest 22 | with: 23 | entrypoint: ./generate_slides.sh 24 | args: --all 25 | 26 | - name: Make archives 27 | shell: bash 28 | run: | 29 | mv build presentation-pdfs 30 | tar -cf presentation-pdfs.tar.gz presentation-pdfs/ 31 | zip -r presentation-pdfs.zip presentation-pdfs 32 | 33 | - uses: actions/upload-artifact@v4 34 | with: 35 | path: | 36 | presentation-pdfs.tar.gz 37 | presentation-pdfs.zip 38 | name: presentation-pdfs 39 | 40 | create-release: 41 | name: "Create GitHub release" 42 | needs: 43 | - build-pdfs 44 | runs-on: ubuntu-latest 45 | steps: 46 | - uses: actions/checkout@v4 47 | - uses: taiki-e/create-gh-release-action@v1 48 | env: 49 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 50 | 51 | upload-pdfs: 52 | name: "Upload release PDFs" 53 | needs: 54 | - create-release 55 | - build-pdfs 56 | runs-on: ubuntu-latest 57 | steps: 58 | - uses: actions/checkout@v4 59 | - name: Download the build artifact 60 | uses: actions/download-artifact@v4 61 | with: 62 | name: presentation-pdfs 63 | - name: Upload artifact 64 | shell: bash 65 | run: | 66 | TAG="$(echo "${tag}" | sed -E 's@refs/tags/(.+)@\1@')" 67 | gh release upload "${TAG}" "presentation-pdfs.tar.gz" "presentation-pdfs.zip" --clobber 68 | env: 69 | tag: ${{ github.ref }} 70 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 71 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | openpdk@ihp-microelectronics.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /Chapter_00_Preparations/c00_preparations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Preparations" 3 | subtitle: "(Optional)" 4 | author: "Course authors (Git file)" 5 | aspectratio: 169 6 | theme: "CambridgeUS" 7 | colortheme: "rose" 8 | fonttheme: "professionalfonts" 9 | urlcolor: red 10 | linkstyle: bold 11 | date: 12 | section-titles: true 13 | toc: true 14 | --- 15 | 16 | # Chapter 0 - Preparations 17 | 18 | ## Description 19 | 20 | About chapter 0 - Preparations: 21 | 22 | - This chapter is not needed when you participate in an on-site course at IHP. 23 | - The tools and computers at IHP are ready-to-use. 24 | 25 | This chapter can help you if ...: 26 | 27 | - you want to do the course on your own. 28 | - you want to give this course as a trainer. 29 | - you Want to have everything running in your own environment. 30 | 31 | Freshness: 32 | 33 | - The development of the tools is moving fast. 34 | - Expect the installation tutorials to break often. 35 | 36 | Here comes a short description of the options, followed by their detailed guides: 37 | 38 | ### Option A: OpenROAD Flow Scripts (ORFS) on your computer 39 | * A plain installation of OpenROAD, Yosys, Klayout and some flow scripts into your system. 40 | * This option puts everything directly under your control and only installs the minimum toolset neccessary for the course. 41 | * It requires the permissions to install software on your computer. 42 | * The guide makes use of Ubuntu Linux. 43 | 44 | ### Option B: IIC-OSIC-TOOLS in a docker container on your computer 45 | * This docker container is like a swiss knife for EDA tools. It can be configured in many ways and contains a lot of useful tools. 46 | * All the tools for the course are in it. 47 | * It requires the permissions to install software on your computer. 48 | * The guide makes use of Ubuntu Linux. 49 | 50 | ### Option C: ORFS docker images in a docker container on your computer 51 | 52 | - This option was provided by a previous participant of the course: 53 | - **tucanae47**: [https://github.com/tucanae47](https://github.com/tucanae47) 54 | - It links you to a docker that was build and uploaded by **tucanae47** 55 | 56 | * The requirements are the same as with Options B 57 | 58 | ## Install Option A: OpenROAD Flow Scripts (ORFS) on your computer 59 | * This guide is a list of shell commands with some short explanations and weblinks. 60 | * This was tested on a freshly installed Ubuntu LTS 24.04.1. 61 | * The order of the commands is crucial and must not be skipped. 62 | * For more explanations look into the documentations and README files of the tools. The weblinks are given. 63 | 64 | ### Prerequisites: 65 | * Ubuntu LTS 24.04.1 (should work on other Linux too, see weblink) 66 | * Permission to install software (sudo rights) 67 | * Reliable internet connection 68 | * git installed: ```sudo apt install git``` 69 | 70 | Weblink for detailed information: 71 | 72 | [https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/master/docs/user/BuildLocally.md](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/master/docs/user/BuildLocally.md) 73 | 74 | ### Your install folder 75 | Navigate to a folder where you want the installation to reside in. The install will need some Gigabytes space. 76 | ``` 77 | cd 78 | ``` 79 | 80 | ### Clone the ORFS repo 81 | Clone the repository to your computer: 82 | 83 | ``` 84 | git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts 85 | ``` 86 | 87 | ### Run the setup script 88 | Run the setup script to install the dependecies: 89 | ``` 90 | cd OpenROAD-flow-scripts 91 | ``` 92 | ``` 93 | sudo ./setup.sh 94 | ``` 95 | 96 | ### Build the tools 97 | Build all tools. This will take a while, depending on the computer: 98 | ``` 99 | ./build_openroad.sh --local 100 | ``` 101 | 102 | ### Verify the builds 103 | Verify that the tools are available. You should get version informations of the tools with the following commands: 104 | ``` 105 | source ./env.sh 106 | ``` 107 | ``` 108 | klayout -v 109 | ``` 110 | ``` 111 | yosys --version 112 | ``` 113 | ``` 114 | openroad -version 115 | ``` 116 | 117 | ## Install Option B: IIC-OSIC-TOOLS in a docker container on your computer 118 | * This guide is a list of shell commands with some short explanations and weblinks. 119 | * This was tested on a freshly installed Ubuntu LTS 24.04.1. 120 | * The order of the commands is crucial and must not be skipped. 121 | * For more explanations look into the documentations and README files of the tools. The weblinks are given. 122 | 123 | ### Prerequisites: 124 | * Ubuntu LTS 24.04.1 125 | * Permission to install software (sudo rights) 126 | * Reliable internet connection 127 | 128 | ### The IIC-OSIC-TOOLS docker container: 129 | With the following steps a preconfigured docker gets installed. The docker is created and maintained by: 130 | Institute for Integrated Circuits (IIC) at the Johannes Kepler University Linz (JKU) 131 | 132 | and is avaiable in their Github with more detailed installation instructions: 133 | [https://github.com/iic-jku/IIC-OSIC-TOOLS](https://github.com/iic-jku/IIC-OSIC-TOOLS) 134 | 135 | ### Step 1: Install docker with apt: 136 | 137 | Weblink for detailed informations: 138 | [https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository) 139 | 140 | Add Docker's official GPG key: 141 | ``` 142 | sudo apt-get update 143 | ``` 144 | 145 | ### 146 | ``` 147 | sudo apt-get install ca-certificates curl 148 | ``` 149 | ``` 150 | sudo install -m 0755 -d /etc/apt/keyrings 151 | ``` 152 | ``` 153 | sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc 154 | ``` 155 | ``` 156 | sudo chmod a+r /etc/apt/keyrings/docker.asc 157 | ``` 158 | 159 | ### 160 | Add the repository to apt sources: 161 | ``` 162 | echo \ 163 | "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ 164 | $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ 165 | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 166 | ``` 167 | ``` 168 | sudo apt-get update 169 | ``` 170 | 171 | ### 172 | Install the latest version of docker: 173 | ``` 174 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 175 | ``` 176 | 177 | ### Step 2: Manage docker as a non-root user 178 | 179 | Weblink for detailed informations: 180 | [https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user) 181 | 182 | ``` 183 | sudo groupadd docker 184 | ``` 185 | ``` 186 | sudo usermod -aG docker $USER 187 | ``` 188 | ``` 189 | newgrp docker 190 | ``` 191 | 192 | ### Step 3: Run the hello-world docker: 193 | 194 | Run the hello-world example docker (without the need of sudo user): 195 | ``` 196 | docker run hello-world 197 | ``` 198 | 199 | No errors should be displayed in running the hello-world example. The output in the shell should contain this message: 200 | 201 | ### 202 | ``` 203 | ... 204 | Hello from Docker! 205 | This message shows that your installation appears to be 206 | working correctly. 207 | 208 | To generate this message, Docker took the following steps: 209 | 1. The Docker client contacted the Docker daemon. 210 | 2. The Docker daemon pulled the "hello-world" image from 211 | the Docker Hub. (amd64) 212 | 3. The Docker daemon created a new container from that 213 | image which runs the executable that produces the 214 | output you are currently reading. 215 | 4. The Docker daemon streamed that output to the Docker 216 | client, which sent it to your terminal. 217 | ... 218 | ``` 219 | 220 | 221 | ### Step 4: Clone the IIC-OSIC-TOOLS git repository to your computer: 222 | 223 | Weblink for detailed informations about the steps 4 - 5: 224 | [https://github.com/iic-jku/IIC-OSIC-TOOLS/blob/main/README.md](https://github.com/iic-jku/IIC-OSIC-TOOLS/blob/main/README.md) 225 | 226 | 227 | Install git: 228 | ``` 229 | sudo apt install git 230 | ``` 231 | 232 | Navigate to a folder where you want the repository to be in: 233 | ``` 234 | cd 235 | ``` 236 | ### 237 | 238 | Clone the IIC-OSIC-TOOLS: 239 | ``` 240 | git clone --depth=1 https://github.com/iic-jku/iic-osic-tools.git 241 | ``` 242 | 243 | ### Step 5: Start the docker 244 | ``` 245 | ./start_x.sh 246 | ``` 247 | A shell window pops up, in which the docker runs. 248 | 249 | ### Step 6: Get the OpenROAD flow scripts 250 | * To be written 251 | * This should be matching to option C (IHP server) 252 | * Waiting on IHP information about their docker / server install. 253 | 254 | ## Install Option C: ORFS docker images in a docker container on your computer 255 | 256 | ### Foreword about Option C: 257 | 258 | - This option was provided by a previous participant of the course: 259 | - **tucanae47**: [https://github.com/tucanae47](https://github.com/tucanae47) 260 | - It links you to a docker that was build and uploaded by **tucanae47** 261 | 262 | #### Prerequisites and Docker install 263 | 264 | * same as option B 265 | 266 | ### Build your own docker image 267 | This is taken from the ORFS documentation here 268 | 269 | [https://openroad-flow-scripts.readthedocs.io/en/latest/user/BuildWithDocker.html#clone-and-build](https://openroad-flow-scripts.readthedocs.io/en/latest/user/BuildWithDocker.html#clone-and-build) 270 | 271 | and only tested with the designs from the IHP 272 | ``` 273 | git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts 274 | cd OpenROAD-flow-scripts 275 | ./build_openroad.sh 276 | ``` 277 | ### Use a pre-build docker image by tucanae47 278 | 279 | - Here is a pre-build docker image by **tucanae47** 280 | - This image can be used without building a docker image yourself. 281 | 282 | #### Workaround with a pre-build image 283 | 284 | - The dockerhub [image](https://hub.docker.com/r/openroad/flow-ubuntu22.04-builder) provided by openroad after multiple tests was not working. 285 | 286 | - As a workaround, one fully fresh docker image was built and uploaded to 287 | 288 | - [https://hub.docker.com/r/tucanae47/orfs](https://hub.docker.com/r/tucanae47/orfs). 289 | 290 | - Pull the image and tag it so that the `docker_shell` utility can use it. 291 | 292 | ``` 293 | docker pull tucanae47/orfs 294 | docker tag tucanae47/orfs openroad/flow-ubuntu22.04-builder:latest 295 | ``` 296 | 297 | ### Verify the builds 298 | 299 | Start docker using the provided scripts for starting openroad executing `make` from the flow directory using the `docker_shell` utility: 300 | 301 | ``` 302 | cd flow 303 | ./util/docker_shell make 304 | ``` 305 | 306 | The `docker_shell` script will execute comands from docker with correct config. 307 | The rest of the commands part of the make targets of `ORFS` will work in the same way: 308 | 309 | 310 | ``` 311 | ./util/docker_shell make clean_all 312 | ./util/docker_shell make gui_final 313 | ``` 314 | 315 | ### Access docker and execute cmds with docker-compose (advanced): 316 | 317 | docker compose allows the creation of complex docker setups inside a yaml file 318 | 319 | ### Step 1 320 | 321 | install docker-compose 322 | 323 | ``` 324 | sudo apt-get update 325 | sudo apt-get install docker-compose-plugin 326 | ``` 327 | 328 | ### Step 2 329 | 330 | Paste the following yaml snippet into a file named 331 | 332 | `docker-compose.yml` 333 | 334 | and place it on the flow in the ORFS directory 335 | 336 | `/path/to/OpenROAD-flow-scripts/flow` 337 | 338 | ### 339 | 340 | ``` 341 | version: '3.8' 342 | 343 | services: 344 | openroad: 345 | image: ${OR_IMAGE:-openroad/flow-ubuntu22.04-builder:latest} 346 | container_name: openroad_container 347 | network_mode: "host" 348 | environment: 349 | - LIBGL_ALWAYS_SOFTWARE=1 350 | - QT_X11_NO_MITSHM=1 351 | - XDG_RUNTIME_DIR=/tmp/xdg-run 352 | - DISPLAY=${DISPLAY} 353 | - QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb 354 | - XAUTHORITY=/tmp/.docker.xauth 355 | - FLOW_HOME=/OpenROAD-flow-scripts/flow/ 356 | - YOSYS_EXE=${YOSYS_EXE:-/OpenROAD-flow-scripts/tools/install/yosys/bin/yosys} 357 | - OPENROAD_EXE=${OPENROAD_EXE:-/OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad} 358 | - KLAYOUT_CMD=${KLAYOUT_CMD:-/usr/bin/klayout} 359 | volumes: 360 | - /tmp/.X11-unix:/tmp/.X11-unix 361 | - /tmp/.docker.xauth:/tmp/.docker.xauth 362 | - .:/OpenROAD-flow-scripts/flow:Z 363 | stdin_open: true 364 | tty: true 365 | ``` 366 | This will allow a linux computer to execute gui commands too. 367 | 368 | ### Step 3 369 | 370 | Get inside the docker and continue the normal workflow for the course 371 | 372 | ``` 373 | # allow docker client to connect to your xserver 374 | xhost + 375 | docker-compose run openroad 376 | # inside the docker run all cmds learned 377 | root@userX:/OpenROAD-flow-scripts# source env.sh 378 | root@userX:/OpenROAD-flow-scripts# cd flow 379 | root@userX:/OpenROAD-flow-scripts# make clean_all 380 | root@userX:/OpenROAD-flow-scripts# make 381 | root@userX:/OpenROAD-flow-scripts# make gui_final 382 | root@userX:/OpenROAD-flow-scripts# klayout 383 | root@userX:/OpenROAD-flow-scripts# openroad -gui 384 | ``` -------------------------------------------------------------------------------- /Chapter_01_Introduction/c01_questions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 01 Lecture" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "Berkeley" 6 | colortheme: "seahorse" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/questions.png 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 1 - Introduction and overview - QUESTIONS 17 | 18 | Recap questions for Chapter 1 19 | 20 | ### Questions 21 | ::: nonincremental 22 | 23 | - What are the features of open-source software? 24 | - RTL is an abbreviation for ... ? 25 | - Explain RTL in your own words. 26 | - GDS (II) is an abbreviation for ... ? 27 | - Explaing GDS (II) in your own words. 28 | - RTL-to-GDS (RTL2GDS) stands for? Name some bulletpoints. 29 | - What is OpenROAD? 30 | - How old is OpenROAD? 31 | - Is there more OS-EDA software than OpenROAD? 32 | - What are these? Name some? 33 | - Since when can open-source EDA software be used to build physical microchips? 34 | 35 | -------------------------------------------------------------------------------- /Chapter_01_Introduction/c01_training_advanced.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 01 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/advanced.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 01 - Server, Login, Shell - TRAINING - Advenced 17 | 18 | ## Advanced shell training 19 | 20 | Learn some more usage of the linux terminal shell with this advanced training. 21 | 22 | ### Rename the textfile 23 | 24 | You remember your textfile from earlier? 25 | 26 | ##### Task: Rename the textfile 27 | 28 | - Do this in a shell terminal (not in GNOME, means: no mouse, no file explorer!) 29 | - Navigate to your created dirctory (with ```cd``` and ```cd ..```) 30 | - Rename you file to another filename with ```mv``` 31 | - If you don't know how to use ```mv```, read the man page first with ```man mv``` and learn the usage. 32 | 33 | ### Change the content in the textfile 34 | 35 | ##### Task: Change the content in the textfile 36 | 37 | - Do this in a shell terminal (not in GNOME, means: no mouse, no file explorer!) 38 | - Navigate to your created dirctory (with ```cd``` and ```cd ..```) 39 | - Open the textfile with ```nano ``` 40 | - Examine the two lines at the bottom. These are keyboard commands for the nano editor. Find the key shortcuts for save and exit. What are they? 41 | - Change some text, save and exit your textfile. 42 | 43 | -------------------------------------------------------------------------------- /Chapter_01_Introduction/c01_training_bonus.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 01 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/bonus.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 01 - Server, Login, Shell - TRAINING - Bonus 17 | 18 | ## Two ideas 19 | 20 | - For this Bonus training there are two ideas of what can be done. 21 | - These tasks can be re-visited verytime during the course when there is free time. They might take longer then the course week itself. 22 | - Taking these bonus ideas back to home as a starting point for your own EDA designs is intended. 23 | 24 | ## Do the siliwiz lessons 25 | 26 | - Doing the siliwiz lessons helps a lot to learn more about semiconductors in general. 27 | - In the course chapter about the open-source PDK the knowledge from Siliwiz will definitely be helpful for deeper understanding. 28 | - If you want to go into analog circuit design, this might be a good start too. 29 | 30 | ##### Task: Start doing the SiliWiz lessons 31 | 32 | - Here you go (Link to lesson is upper right corner): 33 | 34 | - [https://app.siliwiz.com/](https://app.siliwiz.com/) 35 | 36 | - Come back to the lessons whenever there is free time in the course. 37 | 38 | ## Look for a tinytapeout design 39 | 40 | - In this course we have pre-configured and tested examples for the chip designs, 41 | - But you could try to build an own designs. The course trainer might not be able to guide you fully. You're mostly on your own. 42 | 43 | ### What to expect 44 | 45 | This idea is for: 46 | 47 | - If you feel like you want to do an own design, but don't want to write a Verilog project from the start. 48 | - Look into all the Tinytapeout shuttle runs. The designs are open-source. 49 | - Open-source: You are allowed to review, modify, use the designs. 50 | - SSo you can use them for creating your own exmaple for this course. 51 | 52 | ### Where and how to start 53 | 54 | ##### Task: Find a design from TinyTapeout 55 | 56 | - [https://tinytapeout.com/runs/](https://tinytapeout.com/runs/) 57 | - Browse the designs from the TinyTapeout shuttle runs. 58 | - Look a design that looks fitting for you 59 | - Only take designs with good documentation!!! 60 | - Find the Github repository of the design. 61 | - Review the documentation and the Verilog code. 62 | 63 | 64 | ### Next steps (roughly) 65 | 66 | After chapter 3 + 4 (Verilog and First run): 67 | 68 | - Take a pre-configured example design (gcd) as template 69 | - Copy the template as a new design (see ORFS tutorial) 70 | - Add the Verilog from the TT design 71 | 72 | After chapter 5 + 6 +7 (PDK and OpenROAD GUI): 73 | 74 | - Try to modify the rest of the new design: 75 | * config files 76 | * constraints 77 | * Makefile 78 | - Give it a try: run the design 79 | -------------------------------------------------------------------------------- /Chapter_01_Introduction/c01_training_common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 01 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/common.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 01 - Server, Login, Shell - TRAINING - Common 17 | 18 | ## Server and user credentials 19 | 20 | The PC environment for the course will be provied by IHP. 21 | 22 | - Your PC in front of you must be connected to a server 23 | - You will then work in a Ubuntu 24 Linux system 24 | - The desktop GUI will be Gnome 25 | 26 | ### Connect to the IHP server 27 | 28 | ##### Follow these steps: 29 | 30 | 1. Open ThinLinc on the host PC (Windows?) 31 | 2. Go to the Options and set "Fullscreen on this monitor" 32 | 3. Connect with the login data, given to you by IHP 33 | 4. Ubuntu with Gnome desktop should start in ThinLinc 34 | 35 | ##### For Log out: 36 | 37 | 1. Just "Log out". Don't Power Off. 38 | 2. This will take you back to the host system. 39 | 40 | ##### Notice: 41 | 42 | - Please ask if there is questions! 43 | - We`ll try to do this for all participants first, before proceeding to the next steps of the training. 44 | 45 | ## GNOME desktop: First lookaround 46 | 47 | ### Search, start and close programs 48 | 49 | ##### Create and save a textfile: 50 | 51 | 1. Search for a texteditor (gedit) 52 | 2. Open gedit 53 | 3. Write a litte (your name or anything else) 54 | 4. Save the textfile with a name and the suffix .txt 55 | 5. To a new dirctory: Documents/myfiles 56 | 6. Close the texteditor (gedit) 57 | 58 | ### Tab-switching between programs 59 | 60 | ##### Tab-switch between opened programs: 61 | 62 | 1. Search and open at least three different programs (office, gedit, document viewer?) 63 | 2. Tab between the programs (with ALT+TAB on the keyboard) 64 | 3. It is a circle. After three Tabs you should be at the first again. 65 | 4. Close all programs 66 | 67 | ## The course data 68 | 69 | ### Download and unpack 70 | 71 | #### Get the course data 72 | 73 | - Get the latest release download package: 74 | 75 | [https://github.com/OS-EDA/Course/releases](https://github.com/OS-EDA/Course/releases) 76 | 77 | - Create a directory for the course slides. 78 | - In Linux the ~/Documents is a good place to create the directory. Maybe create the directory Documents/course 79 | - Unpack the course into this directory. 80 | 81 | ### Look around in the course data 82 | 83 | ![Course directory structure](pics_lecture/coursed_repo_structure.png) 84 | 85 | ### The chapters and slides 86 | 87 | You will find the slides in the ```build``` dirctory. 88 | 89 | - If sorted alphabetical, it makes most sense. 90 | - C0X is the chapter number. 91 | - In each chapter: 92 | * Start with the lecture 93 | * Cheasheet (if available) is a single slide 94 | * Trainnings in the order commcon, advanced and bonus 95 | * Questions are for the next day (mornings) 96 | 97 | ##### Task: 98 | 99 | - Examine the ```build``` directory. 100 | - Open and close some of the pdf files. 101 | - Become comfortable with the course structure. 102 | 103 | ### Links from the slides 104 | 105 | ##### 106 | This might be outdated for the course, please try yourself. 107 | 108 | - An issue with the linux document viewer and snap browsers. 109 | - Links from slides don't open in the browser. 110 | 111 | Possible workaround: 112 | 113 | - Right click the link and copy 114 | - Open browser 115 | - Paste link to URL line 116 | 117 | ### Workspace arrangement 118 | 119 | Suggestions or Options: 120 | 121 | - Arrange windows next to each other 122 | - ALT+TAB between programs (tasks) 123 | - Close unwanted windows after the completion of a chapter 124 | 125 | ## Linux shell 126 | 127 | ### Short commandl ist of a linux shell 128 | 129 | - ```ls``` (list content of directory) 130 | - ```ls -al``` (list with option for more information) 131 | - ```cd``` directoryname (change to directory) 132 | - ```cd ..``` (change to upper directory) 133 | - ```mkdir``` (make directory) 134 | - ```touch``` (make file) 135 | - ```mv``` (move) 136 | - ```cp``` (copy) 137 | - ```nano``` (opens the nano file editor) 138 | 139 | ### Man pages 140 | 141 | If unsure how to use a command, read the man-page: 142 | 143 | ``` 144 | man 145 | ``` 146 | 147 | ##### Task: 148 | 149 | - Open the man pages of all the commands in the above list (last slide) 150 | - Find the syntax for the commands (it is given on the top of the man page) 151 | - What are ```OPTION```, ```SOURCE``` and ```DEST``` ? 152 | - Find the definition of the option ```-al``` for the command ```ls``` 153 | 154 | ## IMPORTANT Tasks 155 | 156 | To get ready for working with the open-source EDA tools, you must run (execute) a shell script in your shell terminal. 157 | 158 | **This is aboslutly neccessary for the rest of the course** 159 | 160 | There are two options to do this: 161 | 162 | 1. Every time you open a shell and want to work with the tools 163 | 2. Once in the bashrc 164 | 165 | ### Option 1: Source every time in the shell 166 | 167 | ##### Task: Setup the linux tool environment 168 | 169 | - Open a shell terminal 170 | - Run ```source /eda/or2/env.sh``` 171 | - Do this every time you open a new shell. 172 | - It doesn't hurt of you do it multiple times. Nothing breaks. 173 | - It will lead to strange behaviour and no results if it is not done. 174 | 175 | ##### 176 | 177 | You should get a message like ```copied flow directory``` or ```flow directory already there``` 178 | 179 | ### Option 2: Source in the bashrc 180 | 181 | ##### Task: Modify .bashrc with source command 182 | 183 | - Find the file ```.bashrc```: 184 | - Location: go to the users home directory ```cd ~``` 185 | - Hidden files have a point as pre-fix in their name. List the files with ```ls -al``` 186 | - Open the file ```.bashrc``` in a texteditor. ```nano .bashrc``` 187 | - At the bottom line, add the command ```source /eda/or2/env.sh``` 188 | - Save the file and close the editor 189 | - In a shell terminal: reload bashrc with the command ```. ~/.bashrc``` 190 | 191 | ##### 192 | 193 | You should get a message like ```copied flow directory``` or ```flow directory already there``` 194 | 195 | ### Check the environment 196 | 197 | - Check if the setup was successfull. 198 | - **Don't continue if the following checks are errornous, but ask for help from the trainer** 199 | 200 | ##### Task: Check the environment 201 | - Open a shell terminal 202 | - Run ```source /eda/or2/env.sh``` 203 | - See if the tools are sourced (available) with getting their versions: 204 | * ```openroad -version``` should give your the version number 205 | * ```yosys --version``` should give you the version number 206 | * ```klayout -v``` should give you the version number 207 | 208 | ### Congratulations! 209 | 210 | **Congratulations:** 211 | 212 | **You have succesfully run some of the open-source EDA tools on a linux server.** 213 | 214 | - You did run openroad, yosys and klayout. 215 | - They did not do much, but giving you their version numbers. 216 | - But it is the needed base for the rest of the course. 217 | 218 | **You are on a good way** 219 | 220 | ### Linux Power settings 221 | 222 | By default the screen goes black after 5 minutes of idle. Additionaly the screen locks and you have to enter your password again. 223 | 224 | This is good and intended. But might be a little too annoying for the course. 225 | 226 | ##### Task: Disable screen black out 227 | 228 | - Find the linux "power settings" 229 | - Disable the "screen black after 5 mins" or higher the value. 230 | 231 | ## Flow directory 232 | 233 | The last step (the important one) created a directory in your linux home directory: 234 | 235 | - The ```flow``` directory 236 | 237 | This is the most important directory for the course! 238 | 239 | ### Examine the flow directory 240 | 241 | ##### Task: Examine the flow directory 242 | 243 | - Open a shell terminal 244 | - Run ```source /eda/or2/env.sh``` 245 | - Navigate to the ```flow``` directory as you learned before 246 | - List the content with ```ls -al``` 247 | - Find: 248 | * The ```Makefile``` 249 | * The ```/flow/designs/src``` directory. What is inside? 250 | * The ```flow/designs/ihp-sg13g2``` directory. What is inside? 251 | 252 | ### The Makefile 253 | 254 | ##### Task: Open the Makefile 255 | 256 | - Open the Makefile in a texteditor (with gedit) 257 | - What is inside the Makefile? 258 | - What could be the meaning of 259 | * ```DESIGN_CONFIG=....``` 260 | * ```#DESIGN_CONFIG=----``` 261 | - Close texteditor without changes in the Makefile 262 | 263 | ## Online shell resources 264 | 265 | ### Online shell tutorial 266 | 267 | To learn some Linux shell, you should find a tutorial that matches good to you. 268 | 269 | I found this one simple and good to follow for me while learning Linux shell: 270 | 271 | [https://community.linuxmint.com/tutorial/view/100](https://community.linuxmint.com/tutorial/view/100) 272 | 273 | ### Makefile 274 | 275 | OpenROAD flow scripts use Makefiles. So you might want to learn some basics about Makefiles. 276 | 277 | Again here is the tutorial that has helped me most: 278 | 279 | [https://makefiletutorial.com/](https://makefiletutorial.com/) 280 | 281 | ### Tips and tricks 282 | 283 | - shell: TAB for autocompletion 284 | - shell: 2xTAB for all choices of autocompletion 285 | - Open a new shell terminal with the mouse: 286 | * Right click on an empty space in the directory window 287 | * Choose "open in Terminal" 288 | 289 | -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/advanced.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/advanced.jpg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/advanced.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/bonus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/bonus.jpg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/bonus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/bonus.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/c01_cheatsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/c01_cheatsheet.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/c01_cheatsheet_empty.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/c01_cheatsheet_empty.odp -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/c01_cheatsheet_empty.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/c01_cheatsheet_empty.pdf -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/c01_cheatsheet_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/c01_cheatsheet_empty.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/c05_cheatsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/c05_cheatsheet.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/cheatsheet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/cheatsheet.jpg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/cheatsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/cheatsheet.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/chip.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/chip.jpg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/chip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/chip.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/common.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/common.jpg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/common.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/common.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/course_week.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/course_week.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/coursed_repo_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/coursed_repo_structure.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/gds_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/gds_klayout.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/gds_wikipedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/gds_wikipedia.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/lecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/lecture.jpg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/lecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/lecture.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/cells_3dprint_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/cells_3dprint_1.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/cells_3dprint_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/cells_3dprint_2.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/cells_3dprint_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/cells_3dprint_3.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/inv_gdsviewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/inv_gdsviewer.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/inv_layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/inv_layers.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/inv_stl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/inv_stl.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/maximo_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/maximo_1.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/maximo_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/maximo_2.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/maximo_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/maximo_3.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/maximo_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/maximo_4.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/tinytapeout_gds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/tinytapeout_gds.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/webviewer_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/webviewer_1.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/webviewer_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/webviewer_2.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/pics_os/webviewer_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/pics_os/webviewer_3.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/questions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/questions.jpg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/questions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/questions.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_to_gds.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_to_gds.odg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_to_gds.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_to_gds.pdf -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_to_gds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_to_gds.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_to_gds_1.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_to_gds_1.odg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_to_gds_1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_to_gds_1.pdf -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_to_gds_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_to_gds_1.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_to_gds_2.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_to_gds_2.odg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_to_gds_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_to_gds_2.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/rtl_wikipedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/rtl_wikipedia.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/screenshot_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/screenshot_advanced.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/screenshot_bonus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/screenshot_bonus.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/screenshot_common.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/screenshot_common.png -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/training.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/training.jpg -------------------------------------------------------------------------------- /Chapter_01_Introduction/pics_lecture/training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_01_Introduction/pics_lecture/training.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/c02_lecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 02 Lecture" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "AnnArbor" 6 | colortheme: "crane" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/lecture.jpg 11 | date: 12 | section-titles: true 13 | toc: true 14 | --- 15 | 16 | # Chapter 2 - OpenROAD workflow 17 | 18 | ## History of OpenROAD 19 | 20 | ### Foundations and Realization of Open, Accessible Design (OpenROAD) 21 | 22 | At the top of the documentation: 23 | 24 | [https://openroad-flow-scripts.readthedocs.io](https://openroad-flow-scripts.readthedocs.io) 25 | 26 | ![Darpa IDEA [^1]](pics_lecture/history_openroad_docs_1.png "Darpa IDEA") 27 | 28 | [^1]: Source: Screenshot of the webpage. 29 | 30 | ### Darpa IDEA 31 | 32 | [https://www.darpa.mil/research/programs/intelligent-design-of-electronic-assets](https://www.darpa.mil/research/programs/intelligent-design-of-electronic-assets) 33 | 34 | ![Darpa IDEA [^1]](pics_lecture/history_darpa_idea.png "Darpa IDEA") 35 | 36 | [^1]: Source: Screenshot of the webpage. 37 | 38 | ### Darpa ERI 39 | 40 | 2018/2019 41 | Darpa ERI, cadence and the people 42 | 43 | [https://community.cadence.com/tags/openroad](https://community.cadence.com/tags/openroad) 44 | 45 | Start reading from the bottom! 46 | 47 | ![Darpa ERI [^1]](pics_lecture/history_darpa.png "Darpa ERI Blog") 48 | 49 | [^1]: Source: Screenshot of the webpage. 50 | 51 | ### OpenROAD V1.0 52 | 53 | Document with OpenROAD V1.0 Expectations: 54 | 55 | [https://vlsicad.ucsd.edu/NEWS19/OpenROAD%20RTL-to-GDS%20v1.0%20Expectations.pdf](https://vlsicad.ucsd.edu/NEWS19/OpenROAD%20RTL-to-GDS%20v1.0%20Expectations.pdf) 56 | 57 | ![OpenROAD v1.0 [^1]](pics_lecture/history_or_1.png "OpenROAD v1.0") 58 | 59 | [^1]: Source: Screenshot of the webpage. 60 | 61 | ### V1.0 Roadmap 62 | 63 | How to deal with these expectations: 64 | 65 | [https://eri-summit.darpa.mil/docs/ERIsummit2019/posh/08IDEA%20UCSD%20Website.pdf](https://eri-summit.darpa.mil/docs/ERIsummit2019/posh/08IDEA%20UCSD%20Website.pdf) 66 | 67 | ![Looking forward [^1]](pics_lecture/history_looking_forward.png "Looking forward") 68 | 69 | [^1]: Source: OpenROAD presentation at DARPA ERI. 70 | 71 | ### Courses for OpenROAD 72 | 73 | A single excellent project (some of us might know): 74 | 75 | [https://theopenroadproject.org/Courses/](https://theopenroadproject.org/Courses/) 76 | 77 | ![Courses [^1]](pics_lecture/openroad_courses.png "OpenROAD Courses") 78 | 79 | [^1]: Source: Screenshot of the webpage. 80 | 81 | ### Help is on the way 82 | 83 | Kudos to this course: 84 | 85 | [https://theopenroadproject.org/news/6455/](https://theopenroadproject.org/news/6455/) 86 | 87 | ![This course [^1]](pics_lecture/eda_course.png "This course") 88 | 89 | [^1]: Source: Screenshot of the webpage. 90 | 91 | ## OpenROAD Flow Scripts 92 | 93 | ### Flow steps: Overview 94 | 95 | ![OpenROAD flow steps [^1]](pics_lecture/flow_01.png "OpenROAD flow steps") 96 | 97 | [^1]: Source: OpenROAD documentation. 98 | 99 | ### Flow step: Synthesis 100 | 101 | ##### Wikipedia: 102 | 103 | [https://en.wikipedia.org/wiki/Logic_synthesis](https://en.wikipedia.org/wiki/Logic_synthesis) 104 | 105 | ##### Zero to ASIC Terminilogy: 106 | 107 | [https://www.zerotoasiccourse.com/terminology/synthesis/](https://www.zerotoasiccourse.com/terminology/synthesis/) 108 | 109 | ##### One sentence: 110 | 111 | Synthesis takes the RTL (HDL, Verilog) and transforms it to a netlist (wires and components, standard cells). 112 | 113 | ### Flow step: Floorplan 114 | 115 | ##### Wikpedia: 116 | 117 | [https://en.wikipedia.org/wiki/Floorplan_(microelectronics)#Floorplanning](https://en.wikipedia.org/wiki/Floorplan_(microelectronics)#Floorplanning) 118 | 119 | ##### Zero to ASIC Terminilogy: 120 | 121 | [https://www.zerotoasiccourse.com/terminology/floorplan/](https://www.zerotoasiccourse.com/terminology/floorplan/) 122 | 123 | ##### One sentence: 124 | 125 | Floorplaning creates a rough plan of the component areas (netlist, padframe, ) and macros onto the space of the microchip (die area). 126 | 127 | ### Flow step: Placement 128 | 129 | ##### Wikpedia: 130 | 131 | [https://en.wikipedia.org/wiki/Placement_(electronic_design_automation)](https://en.wikipedia.org/wiki/Placement_(electronic_design_automation)) 132 | 133 | ##### Zero to ASIC Terminilogy: 134 | 135 | [https://www.zerotoasiccourse.com/terminology/place_and_route/](https://www.zerotoasiccourse.com/terminology/place_and_route/) 136 | 137 | ##### One sentence: 138 | 139 | Placement algorithmically determines fixed places for every component of the design, according to the floorplan. 140 | 141 | ### Flow step: Clock Tree Synthesis 142 | 143 | ##### Wikpedia: 144 | 145 | [https://en.wikipedia.org/wiki/Physical_design_(electronics)#Clock_tree_synthesis](https://en.wikipedia.org/wiki/Physical_design_(electronics)#Clock_tree_synthesis) 146 | 147 | ##### Zero to ASIC Terminilogy: 148 | 149 | [https://www.zerotoasiccourse.com/terminology/place_and_route/](https://www.zerotoasiccourse.com/terminology/place_and_route/) Scroll down the page! 150 | 151 | ##### One sentence: 152 | 153 | Clock tree synthesis builds a tree out of signal paths (with the root as the start point) for a given clock signal under the premise of given timing constraints. 154 | 155 | ### Flow step: Routing 156 | 157 | ##### Wikpedia: 158 | [https://en.wikipedia.org/wiki/Routing_(electronic_design_automation)](https://en.wikipedia.org/wiki/Routing_(electronic_design_automation)) 159 | 160 | ##### Zero to ASIC Terminilogy: 161 | 162 | [https://www.zerotoasiccourse.com/terminology/place_and_route/](https://www.zerotoasiccourse.com/terminology/place_and_route/) Scroll down the page! 163 | 164 | ##### One sentence: 165 | 166 | Routing algorithmically creates all the wires between the components of the design obeying all given design rules and timing contraints. 167 | 168 | ### Flow step: Finishing 169 | 170 | ##### Wikpedia: 171 | 172 | [https://en.wikipedia.org/wiki/Physical_design_(electronics)#Layout_post_processing](https://en.wikipedia.org/wiki/Physical_design_(electronics)#Layout_post_processing) 173 | 174 | ##### One sentence: 175 | 176 | The step of finishing the design can include creating metal fills, finalising the logs and reports, merging multiple GDS to a final one and do the final LVS/DRC checks. 177 | 178 | ### Flow components 179 | 180 | ![OpenROAD flow components [^1]](pics_lecture/flow_02.png "OpenROAD flow components") 181 | 182 | [^1]: Source: OpenROAD documentation. 183 | 184 | ## Fill insertion 185 | 186 | There are two flow components that take care of filling area gaps in the design: 187 | 188 | - Filler cell insertion 189 | - Metal fill insertion 190 | 191 | Both will be explained in the following section. 192 | 193 | ### Filler cells: Reasons 194 | 195 | Why filling the design area with more cells? 196 | 197 | - After floorplaning and placement there will always be gaps between the standard cells 198 | - These gaps must be filled to keep the continuity of 199 | - n-well and p-well spacing 200 | - railing 201 | - implants 202 | - The filling with cells helps against the WPE (well proximity effect) 203 | 204 | ### Filler cells: Properties 205 | 206 | Filler cells 207 | 208 | - have no logic function 209 | - have no inputs and no outputs 210 | - are not in the netlist of the design 211 | - are available in different widths 212 | 213 | ### Filler cells: GDS 214 | 215 | ![Filler cells in different widths (1, 4, 8)](pics_lecture/filler_cells_gds.png) 216 | 217 | ### Metal fill 218 | 219 | What is metal filling? 220 | 221 | - Metal filling adds polygons and shapes to the metal layer(s). 222 | - These fillings have no logic functionality. 223 | - The purpose is creating a more even or uniform distribution of the metal area. 224 | - Physical reasons are planarity and reducing thinkness variations (CMP). 225 | - Metal filling can affect timing and signal integrity. 226 | - Metal filling is done algorithmical (mostly with scripts). 227 | 228 | More to read: 229 | 230 | [https://semiengineering.com/knowledge_centers/materials/fill/](https://semiengineering.com/knowledge_centers/materials/fill/) 231 | 232 | ## Resources 233 | 234 | ### Help with the terminology 235 | 236 | Searching the terms with a standard search engine might not bring usefull results every time. 237 | Matt Venn created a page for EDA terminology: 238 | 239 | [https://www.zerotoasiccourse.com/terminology/](https://www.zerotoasiccourse.com/terminology/) 240 | 241 | ![Zero to Asic Terminology [^1]](pics_lecture/za_terminology.png "Zero to ASIC Terminology page") 242 | 243 | [^1]: Source: Screenshot of the webpage. 244 | 245 | ### The list of open-source tools 246 | 247 | The list of flow steps and flow components in ORFS contains the information about the original open-source tools. 248 | 249 | We will dive a little deeper into this list with the course training: 250 | 251 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#running-the-automated-rtl-to-gds-flow](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#running-the-automated-rtl-to-gds-flow) 252 | 253 | ### Additional links 254 | 255 | Awesome open-source asic resources: 256 | 257 | [https://github.com/mattvenn/awesome-opensource-asic-resources](https://github.com/mattvenn/awesome-opensource-asic-resources) 258 | 259 | Zero-to-ASIC resources list: 260 | 261 | [https://www.zerotoasiccourse.com/resources/](https://www.zerotoasiccourse.com/resources/) 262 | 263 | AIC 2025 lectures by Carsten Wullf: 264 | 265 | [https://github.com/wulffern/aic2025](https://github.com/wulffern/aic2025) 266 | 267 | [https://analogicus.com/aic2025/](https://analogicus.com/aic2025/) 268 | 269 | 270 | ### Meet the developers 271 | 272 | There is a slack community with most of the open-source silicon projects and people in it: 273 | 274 | [https://open-source-silicon.dev](https://open-source-silicon.dev) 275 | 276 | This is the perfect place, if you 277 | 278 | - search for people you heard of in open-source EDA. 279 | - want to reach out to tool developers. 280 | - have all sorts of questions in open-source EDA. 281 | - look for a specific problem and want to see if others already are in a discussion about it. 282 | - want to share your experience and help others. 283 | 284 | ### 285 | 286 | Most of the tools in open-source EDA have their own channel in this slack. Just try search and add for the channel names. 287 | 288 | ![Channels in the open-source-silicon.dev slack](pics_lecture/slack_channels.png) 289 | -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/c02_questions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 02 Questions" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "Berkeley" 6 | colortheme: "seahorse" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/questions.png 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 2 - OpenROAD workflow - QUESTIONS 17 | 18 | Recap questions for Chapter 2 19 | 20 | ### Questions 21 | ::: nonincremental 22 | 23 | - Name some of the internet resources linked in chapter 2. 24 | - Where are the origins of OpenROAD? 25 | - Is OpenROAD a fully from-the-scratch written toolchain? 26 | - Can you name some of the included (used) software projects? 27 | - How many contributors has 28 | * OpenROAD (OR)? 29 | * OpenROAD flow scripts (ORFS)? 30 | - How many close (open) issues (pull requests) has ORFS? 31 | - Name the flow steps in ORFS (round robin in the room) 32 | - Name the flow components in ORFS (round robin in the room) 33 | * (Bonus) Can you describe what the componnent does? 34 | -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/c02_training_advanced.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 02 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/advanced.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 02 - Terminology - TRAINING - Advanced 17 | 18 | ## Preparation for chapter 03 + 04 Bonus Training 19 | 20 | ### 21 | 22 | Another option for building your own design can be started. 23 | 24 | ##### Task: Learn about LFSR 25 | 26 | - Read the Wikipedia about Linear Feedback Shift Registers. 27 | - [https://en.wikipedia.org/wiki/Linear-feedback_shift_register](https://en.wikipedia.org/wiki/Linear-feedback_shift_register) 28 | 29 | ##### Task: Design your own LSFR 30 | 31 | - Try drawing a small LSFR 32 | - 4 to 8 bits length maximum 33 | - 1 or 2 feedback lines with XOR 34 | 35 | ##### Task: Simulate the LSFR with a Bit table 36 | 37 | - Simulate your LSFR with a Bit table 38 | - How should the table look? 39 | - Clock, Register content, Feedback Bits, Input, Output 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/c02_training_common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 02 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/common.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 02 - Terminology - TRAINING - Common 17 | 18 | ## Searching 19 | 20 | ### Browse the resources 21 | 22 | ##### Task: Review the flow terminology 23 | 24 | - Try to formulate the meaning and purpose of all the following search results in your own words. 25 | - Search for each of the flow steps 26 | * Synthesis 27 | * Floorplan 28 | * Placement 29 | * Clock Tree Synthesis 30 | * Routing 31 | * Finishing 32 | - Search for as much flow components as possible (see the components names in the diagram in the lecture slides) 33 | - If no result is found, try a search engine (or chatGPT). 34 | 35 | Matt Venns list: 36 | 37 | [https://www.zerotoasiccourse.com/terminology/](https://www.zerotoasiccourse.com/terminology/) 38 | 39 | 40 | ### Getting the words in place 41 | 42 | In the beginning it can be hard to learn all the new words and give them meaningful connections immediately. 43 | 44 | Let's try to create a timeline (or taskline) for "How to make microchips?" in a joint effort. 45 | 46 | ##### Task: Create a diageram "How to make a microchip?" 47 | 48 | - Everyone can give a keyword of the topic "How to make a microchip?" 49 | - We try to figure out the meaning and the position in a timeline / taskline? 50 | - Flipchart, Whiteboard, Texteditor? 51 | 52 | 53 | ### List the open-source tools in OpenROAD 54 | 55 | OpenROAD uses a lot of open-source tools, that were available even before OpenROAD. 56 | 57 | ##### Task: Create a list of tools 58 | 59 | - Use this link list as the knowledge base: 60 | * [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#running-the-automated-rtl-to-gds-flow](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#running-the-automated-rtl-to-gds-flow) 61 | - Find the names of the open-source tools that are used in ORFS. 62 | - Create a list with the columns: 63 | * Name of the open-source tool 64 | * Flow step and flow component in ORFS were the tool is used. 65 | * Description of the function of the tool 66 | * Bonus: What was modified or contributed to this tool by the OpenROAD team? 67 | 68 | ### Example row 69 | 70 | ##### Example row in the list: 71 | 72 | * Yosys 73 | * Synthesis 74 | * Verilog and contstraints to netlists 75 | * Most of the initial development was coded by Claire Wolf (not by ORFS) 76 | -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/eda_course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/eda_course.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/filler_cells_gds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/filler_cells_gds.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/flow_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/flow_01.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/flow_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/flow_02.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/history_darpa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/history_darpa.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/history_darpa_idea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/history_darpa_idea.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/history_looking_forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/history_looking_forward.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/history_openroad_docs_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/history_openroad_docs_1.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/history_openroad_docs_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/history_openroad_docs_2.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/history_or_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/history_or_1.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/openroad_courses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/openroad_courses.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/slack_channels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/slack_channels.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/slack_website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/slack_website.png -------------------------------------------------------------------------------- /Chapter_02_OpenROAD_tools/pics_lecture/za_terminology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_02_OpenROAD_tools/pics_lecture/za_terminology.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/c03_questions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 03 Questions" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "Berkeley" 6 | colortheme: "seahorse" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/questions.png 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 3 - Verilog crash course - QUESTIONS 17 | 18 | Recap questions for Chapter 3 19 | 20 | ### Questions 21 | ::: nonincremental 22 | 23 | - What are HDL? 24 | - What is Verilog? 25 | - Are there other HDL? 26 | - What is the main difference between HDL and programming languages? 27 | - List and describe the structure of a simple Verilog file. 28 | - Yosys is ... ? 29 | - How to define ports in Verilog? 30 | - Describe the concept of module instanciation in Verilog. 31 | - What is the difference between combinational and sequential circuits? 32 | -------------------------------------------------------------------------------- /Chapter_03_Verilog/c03_training_advanced.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 03 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/advanced.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 3 - Verilog - TRAINING - Advanced 17 | 18 | ## LFSR - Linear Feedback Shift Register 19 | 20 | This Training makes use of the Verilog code of the Linear Feedback Shift Register (LFSR) from the lecture slides. 21 | 22 | ### LFSR as example 23 | 24 | ##### Task: Create directory and Verilog file 25 | 26 | - Create a new directory for the LFSR example (in your Documents dir?) 27 | - Create a new file ```lfsr.v``` inside that directory 28 | - Copy the Verilog code from the lecture slides into the file ```lfsr.v``` 29 | 30 | ### Analyse parts of the Verilog source 31 | 32 | ##### Task: Identify parts in the code 33 | 34 | Find combinational and synchronous parts of the LFSR in 35 | 36 | - the Verilog code 37 | - the Schematic drawing (from the lecture slides) 38 | 39 | ### Using yosys 40 | 41 | ##### Task: Learn to use yosys basics 42 | 43 | Start using the tool ```yosys```. You can get a basic help list with ```yosys --help```. And for the commands it is ```yosys --help ``` 44 | 45 | - Learn how to synthesize a Verilog file to a JSOn netlist. 46 | - Learn to save the JSON netlist to a file 47 | 48 | **Tip:** Use ChatGPT or a search engine to get information about how to use yosys. 49 | 50 | ##### Task: Netlist 51 | 52 | Generate 53 | 54 | - JSON Netlist 55 | 56 | from the LFSR Verilog code 57 | 58 | - Open the JSON netlist. Can you read it? 59 | 60 | -------------------------------------------------------------------------------- /Chapter_03_Verilog/c03_training_common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 03 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/common.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 3 - Verilog - TRAINING - Common 17 | 18 | ## ORFS examples 19 | 20 | The Trainings for chapter 3 (Verilog) start with two of the given examples inside ORFS: 21 | 22 | - The gdc (greatest common denominator) example 23 | - The ibex (RISC-V) example 24 | 25 | For this Training no Verilog code must be written. The Tasks are only about reading and understanding the existing Verilog code. 26 | 27 | ### GDC example 28 | 29 | ##### Task: Find the gdc example 30 | 31 | - Find the Verilog file of the gdc example in ORSF 32 | - Open the Verilog file with an editor 33 | 34 | ##### Task: Questions about the code 35 | 36 | - What are the port definitions 37 | - How many inputs and outputs will the chip have? 38 | - Can you identify other parts of the code? 39 | - What would be the list of pins of a microchip with this design? 40 | 41 | ### IBEX example 42 | 43 | ##### Task: Find the ibex example 44 | 45 | - Find the top level Verilog file of the ibex example in ORSF 46 | - Open the top level Verilog file with an editor 47 | 48 | ##### Task: Questions about the code 49 | 50 | - What are the port definitions? 51 | - How many inputs and outputs has the top level module? 52 | - Can you identify other parts of the code? 53 | - What would be the list of pins of a microchip with this design? 54 | 55 | -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/always_demo_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/always_demo_ok.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/always_demo_wrong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/always_demo_wrong.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/define_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/define_demo.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/define_demo_all.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/define_demo_all.odg -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/define_demo_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/define_demo_all.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/dut.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/dut.odg -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/dut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/dut.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/feedback_logic.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/feedback_logic.odg -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/feedback_logic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/feedback_logic.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/feedback_sequential.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/feedback_sequential.odg -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/feedback_sequential.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/feedback_sequential.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/freecnt.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/freecnt.odg -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/freecnt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/freecnt.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/gtkwave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/gtkwave.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/hsrm_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/hsrm_logo.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/modulo_counter.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/modulo_counter.odg -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/modulo_counter.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/modulo_counter.pdf -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/modulo_counter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/modulo_counter.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/parameter_counter.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/parameter_counter.pdf -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/parameter_counter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/parameter_counter.png -------------------------------------------------------------------------------- /Chapter_03_Verilog/pics_lecture/synchronous_circuit_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_03_Verilog/pics_lecture/synchronous_circuit_diagram.png -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/c04_lecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 04 Lecture" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "AnnArbor" 6 | colortheme: "crane" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/lecture.jpg 11 | date: 12 | section-titles: true 13 | toc: true 14 | --- 15 | 16 | # Chapter 04 - OpenROAD first run 17 | 18 | ## Doing this chapter 19 | 20 | - This chapter is mostly a training. 21 | - We will try to get our first results (GDS files). 22 | - There are example designs avaiable. 23 | - You can start your own design. 24 | 25 | ## The Makefile 26 | 27 | Let's have a look into the Makefile first. 28 | 29 | ### The flow steps 30 | 31 | The Makfile (in the ```/flow``` directory) contains all the flow steps in the same order we already have seen: 32 | 33 | ![The flow steps in the Makefile](pics_lecture/makefile_flow_steps.png) 34 | 35 | ### DESIGN_CONFIG 36 | 37 | The Makefile starts with the selection of the design to run. 38 | 39 | Of interest for this course are the lines regarding to the IHP PDK: 40 | 41 | ``` 42 | #DESIGN_CONFIG=./designs/ihp-sg13g2/aes/config.mk 43 | #DESIGN_CONFIG=./designs/ihp-sg13g2/ibex/config.mk 44 | DESIGN_CONFIG=./designs/ihp-sg13g2/gcd/config.mk 45 | #DESIGN_CONFIG=./designs/ihp-sg13g2/spi/config.mk 46 | #DESIGN_CONFIG=./designs/ihp-sg13g2/riscv32i/config.mk 47 | #DESIGN_CONFIG=./designs/ihp-sg13g2/masked_aes/config.mk 48 | ``` 49 | 50 | The ```gcd``` example is selected for the next run. 51 | 52 | ## The designs to run 53 | 54 | ### gcd (greatest common denominator) 55 | 56 | - The gcd design is included with the OpenROAD-flow-script examples. 57 | - It consists of only a single Verilog file, easy to read. 58 | - Should run on the course server in a few minutes. 59 | 60 | ### 61 | 62 | ![GDS gcd](pics_lecture/gds_gcd.png "GDS from gcd example") 63 | 64 | ### 65 | 66 | gcd files: 67 | 68 | ``` 69 | /src/gcd$ ls 70 | gcd.v 71 | README.md 72 | ``` 73 | 74 | ``` 75 | /ihp-sg13g2/gcd$ ls 76 | autotuner.json 77 | config.mk (important) 78 | constraint.sdc (important) 79 | metadata-base-ok.json 80 | rules-base.json 81 | ``` 82 | 83 | ### ibex: RISC-V core 84 | 85 | - The ibex design is included with the OpenROAD-flow-script examples. 86 | - It consists of many Verilog files, not that easy to read. 87 | - A single run might take more then 30 minutes on the course server. 88 | 89 | ### 90 | 91 | ![GDS ibex](pics_lecture/gds_ibex.png) 92 | 93 | ### 94 | 95 | ibex files: 96 | 97 | ``` 98 | src/ibex$ ls 99 | ibex_alu.v ibex_ex_block.v ibex_register_file_ff.v prim_ram_1p.v 100 | ibex_branch_predict.v ibex_fetch_fifo.v ibex_register_file_fpga.v prim_secded_28_22_dec.v 101 | ibex_compressed_decoder.v ibex_icache.v ibex_register_file_latch.v prim_secded_28_22_enc.v 102 | ibex_controller.v ibex_id_stage.v ibex_wb_stage.v prim_secded_39_32_dec.v 103 | ibex_core.v ibex_if_stage.v LICENSE prim_secded_39_32_enc.v 104 | ibex_counter.v ibex_load_store_unit.v prim_badbit_ram_1p.v prim_secded_72_64_dec.v 105 | ibex_cs_registers.v ibex_multdiv_fast.v prim_clock_gating.v prim_secded_72_64_enc.v 106 | ibex_csr.v ibex_multdiv_slow.v prim_generic_clock_gating.v prim_xilinx_clock_gating.v 107 | ibex_decoder.v ibex_pmp.v prim_generic_ram_1p.v README.md 108 | ibex_dummy_instr.v ibex_prefetch_buffer.v prim_lfsr.v 109 | 110 | ``` 111 | 112 | ### 113 | 114 | ``` 115 | ihp-sg13g2/ibex$ ls 116 | autotuner.json 117 | config.mk 118 | constraint_doe.sdc 119 | constraint.sdc 120 | metadata-base-ok.json 121 | rules-base.json 122 | ``` 123 | 124 | ### masked_aes 125 | 126 | - The masked_aes design is part of a research project and is available on Github: 127 | * [HEP Alliance - Masked AES](https://github.com/HEP-Alliance/masked-aes-tapeout) 128 | 129 | - It consists of three Verilog files, one of them >2000 lines of code. 130 | - Should run in a few minutes on the course server. 131 | 132 | **Special Features:** 133 | 134 | - Contains I/O Pads and a Padring 135 | - Has a README that contains the how-to of a sealring 136 | - Has a README that links to the Metall filler script 137 | 138 | ### 139 | 140 | ![GDS masked_aes](pics_lecture/gds_masked_aes.png) 141 | 142 | ### 143 | 144 | masked_aes files: 145 | 146 | ``` 147 | ihp-sg13g2/masked_aes$ ls 148 | config.mk 149 | constraint.sdc 150 | footprint.tcl 151 | LICENSE 152 | README.md 153 | sealring.gds 154 | src (src directory!) 155 | ``` 156 | 157 | ``` 158 | ihp-sg13g2/masked_aes/src$ ls 159 | AES_Masked.v 160 | AesTb.v 161 | MaskedAes.v 162 | ``` 163 | 164 | ### lfsr 165 | 166 | - The lfsr design example must be created from the scratch. 167 | - The Verilog code is available in the lecture slides of chapter 3 and should become a single file. 168 | - The structure of other examples must be copied for this. 169 | - The configuration files must be copied and adapted for this. 170 | - A single run should be very short. 171 | 172 | ### 173 | 174 | ![GDS lfsr](pics_lecture/gds_lfsr.png) 175 | 176 | ### A TinyTapeout design? 177 | 178 | - The design example must be created from the scratch. 179 | - The Verilog code is available as open-source via TinyTapeout 180 | - The structure of other examples must be copied for this. 181 | - The configuration files must be copied and adapted for this. 182 | - The run time is unpredicted. 183 | 184 | Suggestion: 185 | 186 | The VGA clock example from the pictures earlier: 187 | [https://tinytapeout.com/runs/ttihp0p2/tt_um_vga_clock](https://tinytapeout.com/runs/ttihp0p2/tt_um_vga_clock) 188 | 189 | ### 190 | 191 | ![VGA Clock GDS render](pics_lecture/gds_vga_clock.png) 192 | 193 | 194 | -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/c04_questions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 04 Questions" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "Berkeley" 6 | colortheme: "seahorse" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/questions.png 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 04 - OpenROAD first run - QUESTIONS 17 | 18 | Recap questions for Chapter 4 19 | 20 | ### Questions 21 | ::: nonincremental 22 | 23 | - How to choose the design for a run? 24 | - How to do a run of ORFS? 25 | - What is expected for a succesfull run? 26 | - Name some of the steps in the console output that gets created during the run. 27 | - What is the content of the final table? 28 | -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/c04_training_advanced.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 04 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/advanced.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 04 - OpenROAD first run - TRAINING - Advanced 17 | 18 | ## Build an external example 19 | 20 | ### "masked AES" from the HEP Alliance 21 | 22 | ##### Task: Clone the design 23 | 24 | - Clone the masked AES design from Github. 25 | - Use the tutorial from the HEP Alliance Repository: 26 | 27 | https://github.com/HEP-Alliance/masked-aes-tapeout 28 | 29 | - In a nutshell (clone via https): 30 | ``` 31 | git clone https://github.com/HEP-Alliance/masked-aes-tapeout.git /flow/designs/ihp-sg13g2/masked_aes 32 | ``` 33 | 34 | ### Makefile 35 | 36 | ##### Task: Enable the design 37 | 38 | - Navigate to the ```/flow``` folder 39 | - Edit the Makefile: 40 | * Uncomment the line with your choosen DESIGN_CONFIG from ihp-sg13g2. 41 | In this case the cloned masked_aes: 42 | 43 | ``` 44 | DESIGN_CONFIG=./designs/ihp-sg13g2/masked_aes/config.mk 45 | ``` 46 | 47 | * Re-comment the previous uncommented line with DESIGN_CONFIG. 48 | * The line with the default design does not need to be commented. This only applies when no previous line with DESIGN_CONFIG is set. 49 | 50 | ### Run 51 | 52 | ##### Task: Run ORFS with the design 53 | 54 | - Run ```make``` from inside the ```/flow``` folder. 55 | 56 | ### Success 57 | 58 | - The choosen design should finish after a while and a lot of console output with a table (time/memory) like this: 59 | ``` 60 | Log Elapsed seconds Peak Memory/MB 61 | 62 | ``` 63 | 64 | CONGRATS! Your design got build to a GDS! 65 | 66 | ## Examine the results 67 | 68 | ### The flow steps 69 | 70 | ##### Task: Match the shell output 71 | 72 | - Scroll the shell output from the command to the (successfull) end, 73 | - Identify the flow steps in the shell output 74 | - Try to match your findings to the flow steps and flow components from chapter 2 75 | - Can you identify single open-source tools in the output of the flow? Name the ones you identified. 76 | 77 | ### The GDS 78 | 79 | ##### Task: Examine the GDS 80 | 81 | - See the GDS with the command ```make gui_final``` 82 | 83 | ##### Task: Save an image from the GDS 84 | 85 | - In the TCL console at the bottom of the GUI: 86 | * ```save_image .png``` 87 | * Find the saved image in your directories. -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/c04_training_bonus.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 04 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/bonus.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 04 - OpenROAD first run - TRAINING - Bonus 17 | 18 | ## Create a new design 19 | 20 | In this training session you will integrate a new design for using it with OpenROAD flowscripts. 21 | 22 | You can either: 23 | 24 | - Have your own design ready. 25 | - Take an opensource design from someone else. 26 | 27 | ### Pick a design to integrate 28 | 29 | ##### Task: Choose a design 30 | 31 | - LFSR from earlier? 32 | - TinyTapeOut design? (See earlier Bonus Training) 33 | - Write a new Verilog file with your own design idea. 34 | 35 | ### Create a new design in ORFS 36 | 37 | ##### Task: Insert a new design 38 | 39 | - In the ```flow/designs/src``` directory: create new design 40 | - Create or copy Verilog to there 41 | - In the ```flow/designs/ihp-sg13g2``` directory: create a new design(same name as in src) 42 | - Create or copy the ```config.mk``` and ```constraints.sdc``` from the gdc example to there 43 | - Modify both files to match the Verilog src file and top module. 44 | 45 | ### Makefile 46 | 47 | ##### Task: Enable the design 48 | 49 | - Navigate to the ```/flow``` folder 50 | - Edit the Makefile: 51 | * Uncomment the line with your choosen DESIGN_CONFIG from ihp-sg13g2. 52 | In this case you must create a new line 53 | 54 | ``` 55 | DESIGN_CONFIG=./designs/ihp-sg13g2//config.mk 56 | ``` 57 | 58 | * Re-comment the previous uncommented line with DESIGN_CONFIG. 59 | * The line with the default design does not need to be commented. This only applies when no previous line with DESIGN_CONFIG is set. 60 | 61 | ### Run 62 | 63 | ##### Task: Run ORFS with the design 64 | 65 | - Run ```make``` from inside the ```/flow``` folder. 66 | 67 | ### Success 68 | 69 | - The choosen design should finish after a while and a lot of console output with a table (time/memory) like this: 70 | ``` 71 | Log Elapsed seconds Peak Memory/MB 72 | 73 | ``` 74 | 75 | CONGRATS! Your design got build to a GDS! 76 | 77 | ### The GDS 78 | 79 | ##### Task: Examine the GDS 80 | 81 | - See the GDS with the command ```make gui_final``` 82 | 83 | ##### Task: Save an image from the GDS 84 | 85 | - In the TCL console at the bottom of the GUI: 86 | * ```save_image .png``` 87 | * Find the saved image in your directories. -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/c04_training_common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 04 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/common.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 04 - OpenROAD first run - TRAINING - Common 17 | 18 | ## gcd example 19 | 20 | Start the OpenROAD flow scripts for the gcd example. 21 | ORFS shall create a GDS in this run. 22 | 23 | ### Makefile 24 | 25 | ##### Task: Enable the gcd design in the Makefile 26 | 27 | * Navigate to the ```/flow``` folder 28 | * Edit the Makefile: 29 | * Uncomment the line with DESIGN_CONFIG from ihp-sg13g2 for the gcd example: 30 | 31 | ``` 32 | DESIGN_CONFIG=./designs/ihp-sg13g2/gcd/config.mk 33 | ``` 34 | 35 | * Re-comment the previous uncommented line with DESIGN_CONFIG. 36 | * The line with the default design does not need to be commented. This only applies when no previous line with DESIGN_CONFIG is set. 37 | 38 | ### Run 39 | 40 | ##### Task: Run ORFS with the design 41 | 42 | * Run ```make``` from inside the ```/flow``` folder. 43 | 44 | ### Success 45 | 46 | * The choosen design should finish after a while with a table (time/memory) like this: 47 | ``` 48 | Log Elapsed seconds Peak Memory/MB 49 | 1_1_yosys 0 24 50 | 1_1_yosys_canonicalize 0 17 51 | 1_1_yosys_hier_report 0 12 52 | 2_1_floorplan 0 110 53 | 2_2_floorplan_io 0 106 54 | 2_3_floorplan_tdms 0 98 55 | 2_4_floorplan_macro 0 106 56 | 2_5_floorplan_tapcell 0 105 57 | 2_6_floorplan_pdn 0 108 58 | 3_1_place_gp_skip_io 0 108 59 | 3_2_place_iop 0 107 60 | 3_3_place_gp 0 320 61 | 3_4_place_resized 0 289 62 | 3_5_place_dp 0 112 63 | 4_1_cts 1 379 64 | 5_1_grt 0 340 65 | 5_2_route 93 899 66 | 5_3_fillcell 0 111 67 | 6_1_fill 0 113 68 | 6_1_merge 1 368 69 | 6_report 1 292 70 | Total 96 899 71 | ``` 72 | 73 | CONGRATS! Your first(?) design got build to a GDS! 74 | 75 | ### The flow steps 76 | 77 | ##### Task: Match the shell output 78 | 79 | - Scroll the shell output from the command to the (successfull) end, 80 | - Identify the flow steps in the shell output 81 | - Try to match your findings to the flow steps and flow components from chapter 2 82 | - Can you identify single open-source tools in the output of the flow? Name the ones you identified. 83 | 84 | ### The GDS 85 | 86 | ##### Task: Examine the GDS 87 | 88 | - See the GDS with the command ```make gui_final``` 89 | 90 | ##### Task: Save an image from the GDS 91 | 92 | - In the TCL console at the bottom of the GUI: 93 | * ```save_image .png``` 94 | * Find the saved image in your directories. 95 | 96 | ## ibex: RISC-V 97 | 98 | ### Task: Create a GDS of the ibex design 99 | 100 | - Do the same as with the gcd example, but now for the ibex example. 101 | - Do the steps from above: 102 | * Makefile: Enable ibex design 103 | * Run ORFS with ```make``` 104 | * Examine the shell output 105 | * See the GDS with ```make gui_final``` 106 | * Save an image of the GDS. 107 | 108 | **Be aware:** This ORFS run will take more then 30 minutes to finish! 109 | 110 | 111 | -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/pics_lecture/gds_gcd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_04_OpenROAD_first_run/pics_lecture/gds_gcd.png -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/pics_lecture/gds_ibex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_04_OpenROAD_first_run/pics_lecture/gds_ibex.png -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/pics_lecture/gds_lfsr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_04_OpenROAD_first_run/pics_lecture/gds_lfsr.png -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/pics_lecture/gds_masked_aes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_04_OpenROAD_first_run/pics_lecture/gds_masked_aes.png -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/pics_lecture/gds_vga_clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_04_OpenROAD_first_run/pics_lecture/gds_vga_clock.png -------------------------------------------------------------------------------- /Chapter_04_OpenROAD_first_run/pics_lecture/makefile_flow_steps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_04_OpenROAD_first_run/pics_lecture/makefile_flow_steps.png -------------------------------------------------------------------------------- /Chapter_05_PDK/c05_cheatsheet.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/c05_cheatsheet.odp -------------------------------------------------------------------------------- /Chapter_05_PDK/c05_questions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 05 Questions" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "Berkeley" 6 | colortheme: "seahorse" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/questions.png 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 5 - Process Design Kit (PDK) - QUESTIONS 17 | 18 | Recap questions for Chapter 5 19 | 20 | ### Questions 21 | ::: nonincremental 22 | 23 | - What is a PDK? 24 | - Define the border between development (design) and production of a microchip. 25 | - Where is the (actual) border of open- to closed-source in this? 26 | - Name as many parts of the IHP open-source PDK as you can (round robin) 27 | - What are layers? 28 | - What is a layer stack? 29 | - Can you name some layers and their purpose? 30 | - Name some of the important file formats from the PDK. What are they used for? (round robin). 31 | - Describe the content of the design rules document. 32 | - Which tool does the DRC? 33 | - Which tool does the LVS? 34 | -------------------------------------------------------------------------------- /Chapter_05_PDK/c05_training_advanced.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 05 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/advanced.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 5 - PDK Examination - TRAINING - Advanced 17 | 18 | ## Start with common training 19 | 20 | ##### Task: Common training first 21 | 22 | - Do the common training from chapter 05 first. 23 | - You should have 24 | - a standard cell open in KLayout. 25 | - the PDK lyp file loaded. 26 | 27 | ## Run a 2.5d script 28 | 29 | ##### Task: Run 2.5 script 30 | 31 | - Open the 2.5d script editor: 32 | - Tools -> 2.5d View -> New 2.5d Script 33 | - Press the play button (in the middule of the upper tool row) 34 | - The Viewer should pop up and show the cell in 2.5d 35 | 36 | ## Examine th cell in 2.5d 37 | 38 | ##### Task: Examine 2.5d view 39 | 40 | ![Standard cell in 2.5d viewer](pics_training/01_25dviewer.png) 41 | 42 | ## Add layers in the script 43 | 44 | - You will see only a little of the standard cells layers. 45 | - That is because the script is very basic. 46 | 47 | ##### Task: Enhance the 2.5d script 48 | 49 | - Try to add at least one more layer to the 2.5d script 50 | - Run again and see the result. 51 | 52 | ##### Tip: Cheat from a pre-made script 53 | 54 | Here is a script with some more layers in it: 55 | [https://gist.github.com/rslawson/fecc97d8731da95204ed59b00571582f](https://gist.github.com/rslawson/fecc97d8731da95204ed59b00571582f) 56 | 57 | ## View a more complex design 58 | 59 | ##### Task: 60 | 61 | - Load a coplete design GDS into KLayout, 62 | - Run a 2.5d script and see the viewer. -------------------------------------------------------------------------------- /Chapter_05_PDK/c05_training_bonus.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 05 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/bonus.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 5 - PDK Examination - TRAINING - Bonus 17 | 18 | ## 1. Transistor count 19 | 20 | * Load the gds of the standard cell AND4_1. 21 | * How many transistors are in the cell? 22 | * How to verify this with the use of another file from the PDK? 23 | 24 | ## Next slide: Solution Spoiler! 25 | 26 | SPOILER ALERT: 27 | 28 | * The next slide contains the solution. 29 | * Only proceed to the next slide if you want to see the solution right now! 30 | 31 | ## Solution: Transistor count 32 | 33 | ![AND4_1](pics_training/08_klayout.png "AND4_1") 34 | 35 | ## Solution: Transistor count in file 36 | 37 | File: sg13g2_sdtcell.cdl 38 | 39 | ``` 40 | MN4 net17 D VSS VSS sg13_lv_nmos m=1 w=640.00n l=130.00n ng=1 41 | MN3 net16 C net17 VSS sg13_lv_nmos m=1 w=640.00n l=130.00n ng=1 42 | MN2 net15 B net16 VSS sg13_lv_nmos m=1 w=640.00n l=130.00n ng=1 43 | MN1 net1 A net15 VSS sg13_lv_nmos m=1 w=640.00n l=130.00n ng=1 44 | MN0 X net1 VSS VSS sg13_lv_nmos m=1 w=740.00n l=130.00n ng=1 45 | MP0 net1 A VDD VDD sg13_lv_pmos m=1 w=840.00n l=130.00n ng=1 46 | MP4 X net1 VDD VDD sg13_lv_pmos m=1 w=1.12u l=130.00n ng=1 47 | MP3 net1 D VDD VDD sg13_lv_pmos m=1 w=840.00n l=130.00n ng=1 48 | MP2 net1 C VDD VDD sg13_lv_pmos m=1 w=840.00n l=130.00n ng=1 49 | MP1 net1 B VDD VDD sg13_lv_pmos m=1 w=840.00n l=130.00n ng=1 50 | ``` 51 | 52 | -------------------------------------------------------------------------------- /Chapter_05_PDK/c05_training_common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 05 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/common.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 5 - PDK Examination - TRAINING - Common 17 | 18 | ## 1. Open Klayout 19 | 20 | * Execute ```klayout``` in console shell. 21 | * Klayout starts in viewer mode. 22 | * Edit mode can be started with ```klayout -e``` but is not needed for this training. 23 | 24 | ### 1. Open Klayout 25 | 26 | ![Start Klayout](pics_training/01_klayout.png "Start Klayout") 27 | 28 | ## 2. Load example GDS 29 | 30 | * Search for the final GDS from your example run and load it into Klayoutv 31 | 32 | ### 2. Load example GDS 33 | 34 | ![Load GDS](pics_training/02_klayout.png "Load GDS") 35 | 36 | ## 3. Use a LYP file 37 | 38 | * Recall: What are layer properties and the .lyp file? 39 | * Search the sg13g2 lyp-file from the PDK and enable it in Klayout. 40 | * Make it the default lyp in Klayout. 41 | * Look for changes in the layer list and the GDS. 42 | * What has changed? 43 | 44 | ### 3. Use a LYP file 45 | 46 | ![Use LYP file](pics_training/03_klayout.png "Use LYP file") 47 | 48 | ## 4. Navigate Layers and GDS 49 | 50 | * In the layer list: 51 | * Enable "Hide empty layers". 52 | * Enable "Visibility follows selection". 53 | * De-/Select multiple layers and see the changes. 54 | * Zoom out to see the complete GDS and de-/select layers. 55 | * Zoom into details and de-/select layers. 56 | * Move the GDS file while zoomed in. 57 | * Try to find interesting views. 58 | * Discuss with neighbours what might be of interest. 59 | 60 | ### 4. Navigate Layers and GDS 61 | 62 | ![GDS zoomed out](pics_training/04_klayout_01.png "GDS zoomed out") 63 | 64 | ### 4. Navigate Layers and GDS 65 | 66 | ![GDS zoomed in](pics_training/04_klayout_02.png "GDS zoomed in") 67 | 68 | ## 5. Load cell library GDS 69 | 70 | * Now open another GDS: the standard cell library from the sg13g2 PDK. 71 | * The standard cell library is a single GDS file. Search and load the library file. 72 | 73 | ### 5. Load cell library GDS 74 | 75 | ![Cell library](pics_training/05_klayout.png "Cell library") 76 | 77 | ## 6. Pick a cell 78 | 79 | * All the cell names are displayed in a window to the left. One cell is selected (displayed in bold). The GDS of this cell is viewed. Try to bring another cell "to the top" to see that cells GDS. 80 | * Repeat the layer navigation like in the eaxmple GDS. 81 | 82 | ### 6. Pick a cell 83 | 84 | ![Single cell](pics_training/06_klayout.png "Single cell") 85 | -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/cell_gds_ao21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/cell_gds_ao21.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/cell_schematic_ao21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/cell_schematic_ao21.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/gantt_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/gantt_0.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/issues_closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/issues_closed.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/issues_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/issues_open.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/layer_stack_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/layer_stack_0.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/layout_rules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/layout_rules.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/lydrc_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/lydrc_klayout.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/lylvs_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/lylvs_klayout.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/process_specs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/process_specs.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/pull_requests_closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/pull_requests_closed.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/readme_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/readme_0.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_lecture/supported_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_lecture/supported_tools.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/01_25dviewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/01_25dviewer.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/01_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/01_klayout.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/02_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/02_klayout.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/03_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/03_klayout.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/04_klayout_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/04_klayout_01.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/04_klayout_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/04_klayout_02.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/05_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/05_klayout.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/06_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/06_klayout.png -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/08_klayout.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/08_klayout.odg -------------------------------------------------------------------------------- /Chapter_05_PDK/pics_training/08_klayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_05_PDK/pics_training/08_klayout.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/c06_lecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 06 Lecture" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "AnnArbor" 6 | colortheme: "crane" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/lecture.jpg 11 | date: 12 | section-titles: true 13 | toc: true 14 | --- 15 | 16 | # Chapter 6 - OpenROAD GUI 17 | 18 | ## Analysing desings with the GUI 19 | 20 | ### View layout 21 | 22 | ![View layout](pics_lecture/or_gui_view_layout.png) 23 | 24 | ### View objects 25 | 26 | ![View objects](pics_lecture/or_gui_visualize_objects.png) 27 | 28 | ### Clock tree 29 | 30 | ![Clock tree](pics_lecture/or_gui_clock_tree.png) 31 | 32 | ### Heat maps 33 | 34 | ![Heat maps](pics_lecture/or_gui_heat_maps.png) 35 | 36 | ### Timing report 37 | 38 | ![Timing report](pics_lecture/or_gui_timing_report.png) 39 | 40 | ### Rulers (measure distances) 41 | 42 | ![Rulers](pics_lecture/or_gui_ruler.png) 43 | 44 | ### TCL command interface 45 | 46 | ![TCL interface](pics_lecture/or_gui_tcl_interface.png) 47 | 48 | ### Area report 49 | 50 | ![Area report](pics_lecture/or_gui_area.png) 51 | 52 | ### Timing slack report 53 | 54 | ![Timing slack report](pics_lecture/or_gui_timing_slack.png) 55 | 56 | ### Power report 57 | 58 | ![Power report](pics_lecture/or_gui_power.png) 59 | 60 | ### DRC viewer 61 | 62 | ![DRC viewer](pics_lecture/or_gui_drc_viewer.png) 63 | -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/c06_questions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 06 Questions" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "Berkeley" 6 | colortheme: "seahorse" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/questions.png 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 6 - OpenROAD GUI - QUESTIONS 17 | 18 | Recap questions for Chapter 6 19 | 20 | ### Questions 21 | ::: nonincremental 22 | 23 | - Is the OR-GUI a HDL code editor? 24 | - Is the OR-GUI a full RTL-2-GDS graphic tool? 25 | - What is OR-GUI instead? 26 | - If you have a ready-build project (GDS), what can you do with it in OR-GUI? 27 | - Explain heatmaps 28 | - How to make better chip designs with the analysis in OR-GUI? 29 | - What is the TCL console in the GUI? 30 | 31 | -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/c06_training_common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 06 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/common.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 6 - OpenROAD GUI - TRAINING - Common 17 | 18 | ## Guess and rebuild 19 | 20 | ### Rebuild the challenges 21 | 22 | ##### Task: 23 | Rebuild the next four pictures with any design! 24 | 25 | ### Challenge 1 26 | 27 | ![What is this?](pics_trainings/ibex_clocktree.png) 28 | 29 | ### Challenge 2 30 | 31 | ![What is this?](pics_trainings/ibex_power_density.png) 32 | 33 | ### Challenge 3 34 | 35 | ![What is this?](pics_trainings/ibex_single_clock_path.png) 36 | 37 | ### Challenge 4 38 | 39 | ![What is this?](pics_trainings/masked_aes_pins.png) 40 | 41 | 42 | ## Play the DRC example from ORFS 43 | 44 | The ORFS tutorial contains an example for DRC errors in a design and how to view the DRC errors with the ORFS gui. 45 | 46 | ##### Task: Do the DRC error example 47 | 48 | Link: 49 | 50 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#drc-viewer](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#drc-viewer) 51 | 52 | - Do the steps in the order from the tutorial 53 | - Try to get to the 0 DRC errors. 54 | 55 | ### Solutions (of the challenges) 56 | 57 | 1. Ibex clocktree without most other layers (IHP PDK) 58 | 2. Ibex power density >15 uW (IHP PDK) 59 | 3. Ibex single clock path with all layers off, but the timing paths (IHP PDK) 60 | 4. Masked aes without most metals and only pins names (IHP PDK) 61 | -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_area.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_clock_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_clock_tree.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_drc_viewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_drc_viewer.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_heat_maps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_heat_maps.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_intro.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_power.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_power.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_ruler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_ruler.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_tcl_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_tcl_interface.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_timing_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_timing_report.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_timing_slack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_timing_slack.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_view_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_view_layout.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_lecture/or_gui_visualize_objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_lecture/or_gui_visualize_objects.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_trainings/ibex_clocktree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_trainings/ibex_clocktree.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_trainings/ibex_power_density.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_trainings/ibex_power_density.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_trainings/ibex_single_clock_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_trainings/ibex_single_clock_path.png -------------------------------------------------------------------------------- /Chapter_06_OpenROAD_gui/pics_trainings/masked_aes_pins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_06_OpenROAD_gui/pics_trainings/masked_aes_pins.png -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/c07_lecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 07 Lecture" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "AnnArbor" 6 | colortheme: "crane" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/lecture.jpg 11 | date: 12 | section-titles: true 13 | toc: true 14 | --- 15 | 16 | # Chapter 7 - OpenROAD flow scripts 17 | 18 | ## Introduction 19 | 20 | What happend on the way to here: 21 | 22 | - GDS-2-RTL: OpenROAD 23 | - OpenROAD flow scripts (ORFS) overview 24 | - ORFS flow steps and flow components 25 | - First run of the flow scripts 26 | - A Dive into the PDK (Klayout) 27 | - Analysing: Heatmaps and more (ORFS GUI) 28 | 29 | NOW: 30 | 31 | - One day of using ORFS 32 | - Getting a hands on with important data and features. 33 | 34 | ## ORFS Tutorial 35 | 36 | There is a good tutorial about ORFS in the official documentation: 37 | 38 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html) 39 | 40 | The ORFS online-tutorial was not written for the use with the IHP PDK especially, but we can adopt this easily. 41 | 42 | ### 43 | 44 | ![ORFS Online Tutorial](pics_lecture/orfs_intro.png) 45 | 46 | ## Multiple runs 47 | 48 | ### Caveats of multiple runs in ORFS 49 | 50 | - ORFS does not handle multiple runs for a single design. 51 | - The design run must be cleared with make clean_all, before a new runs can be started. 52 | - !!! The previous data from the previous run will be lost. 53 | 54 | Side feature: 55 | 56 | - A run can start over where you left it. 57 | 58 | ### Workaround for saving the design data 59 | 60 | 1. After a design run: 61 | * Rename the results directory to something different: 62 | * flow/results/ihp-sg13g2/designname/base 63 | * flow/results/ihp-sg13g2/designname/base_old_1 64 | * Rename the reports directory to something different: 65 | * flow/reports/ihp-sg13g2/designname/base 66 | * flow/reports/ihp-sg13g2/designname/base_old_1 67 | 2. With the start of the next run (make): 68 | * The original directory gets created again. 69 | 3. Repeat that before every new run of the same design. 70 | 71 | ### Reviewing the older design data 72 | 73 | - The command ```make gui_final``` only works on the enabled design (Makefile, DESIGN_CONFIG) 74 | - To load an older design from a renamed folder, run ```openroad -gui``` 75 | - This opens an empty GUI and you can load a GDS into it. 76 | - This can be done multiple times in parallel. 77 | 78 | ## Structure of flow directories 79 | 80 | Inside the flow directory: 81 | 82 | ``` 83 | flow$ ls 84 | 85 | Makefile platforms test 86 | designs reports tutorials 87 | results util logs 88 | objects scripts 89 | ``` 90 | 91 | - **Makefile**: Runs the RTL-2-GDS toolchain with a design 92 | - **platforms**: Technology nodes and PDKs 93 | - **designs**: Source and configuration files of the designs 94 | - **reoprts**: Generated report files from the design runs 95 | - **results**: Generated result files from the design runs 96 | 97 | ## TCL Console and commands 98 | 99 | At the bottom of the OpenROAD GUI is the TCl command console. 100 | 101 | Type ```help``` into the console to get a list of the avaiable commands and their syntax. 102 | 103 | Some commands that were already used in this couse: 104 | 105 | - save_image 106 | - report_design_area 107 | - report_power 108 | - report_worst_slack 109 | 110 | ## Reports 111 | 112 | - Reports get generated for each design run. 113 | - The reports are stored in the reports directory. 114 | - These are the report files for the gcd example: 115 | 116 | ``` 117 | reports/ihp-sg13g2/gcd/base$ ls 118 | 119 | 2_floorplan_final.rpt 6_finish.rpt final_resizer.webp 120 | 3_detailed_place.rpt congestion.rpt final_routing.webp 121 | 3_resizer.rpt cts_core_clock.webp grt_antennas.log 122 | 4_cts_final.rpt drt_antennas.log synth_check.txt 123 | 5_global_place.rpt final_clocks.webp synth_stat.txt 124 | 5_global_route.rpt final_ir_drop.webp VDD.rpt 125 | 5_route_drc.rpt final_placement.webp VSS.rpt 126 | ``` 127 | 128 | ## Logs 129 | 130 | - Logs get generated for each design run. 131 | - The logs are stored in the logs directory. 132 | - These are the log files for the gcd example: 133 | 134 | ``` 135 | logs/ihp-sg13g2/gcd/base$ ls 136 | 137 | 1_1_yosys_canonicalize.log 2_6_floorplan_pdn.json 4_1_cts.log 138 | 1_1_yosys_hier_report.log 2_6_floorplan_pdn.log 5_1_grt.json 139 | 1_1_yosys.log 3_1_place_gp_skip_io.json 5_1_grt.log 140 | 2_1_floorplan.json 3_1_place_gp_skip_io.log 5_2_route.json 141 | 2_1_floorplan.log 3_2_place_iop.json 5_2_route.log 142 | 2_2_floorplan_io.json 3_2_place_iop.log 5_3_fillcell.json 143 | 2_2_floorplan_io.log 3_3_place_gp.json 5_3_fillcell.log 144 | 2_3_floorplan_tdms.json 3_3_place_gp.log 6_1_fill.json 145 | 2_3_floorplan_tdms.log 3_4_place_resized.json 6_1_fill.log 146 | 2_4_floorplan_macro.json 3_4_place_resized.log 6_1_merge.log 147 | 2_4_floorplan_macro.log 3_5_place_dp.json 6_report.json 148 | 2_5_floorplan_tapcell.json 3_5_place_dp.log 6_report.log 149 | 2_5_floorplan_tapcell.log 4_1_cts.json 150 | ``` 151 | 152 | ## Results 153 | 154 | - Results (mostly odb, GDS) get generated for each design run. 155 | - The results are stored in the results directory. 156 | - These are the result files for the gcd example: 157 | 158 | ``` 159 | flow/results/ihp-sg13g2/gcd/base$ ls 160 | 161 | 1_1_yosys.v 3_3_place_gp.odb 6_1_fill.sdc 162 | 1_synth.rtlil 3_4_place_resized.odb 6_1_fill.v 163 | 1_synth.sdc 3_5_place_dp.odb 6_1_merged.gds 164 | 1_synth.v 3_place.odb 6_final.def 165 | 2_1_floorplan.odb 3_place.sdc 6_final.gds 166 | 2_2_floorplan_io.odb 4_1_cts.odb 6_final.odb 167 | 2_3_floorplan_tdms.odb 4_cts.odb 6_final.sdc 168 | 2_4_floorplan_macro.odb 4_cts.sdc 6_final.spef 169 | 2_5_floorplan_tapcell.odb 5_1_grt.odb 6_final.v 170 | 2_6_floorplan_pdn.odb 5_2_route.odb clock_period.txt 171 | 2_floorplan.odb 5_3_fillcell.odb keep_hierarchy.tcl 172 | 2_floorplan.sdc 5_route.odb mem.json 173 | 3_1_place_gp_skip_io.odb 5_route.sdc route.guide 174 | 3_2_place_iop.odb 6_1_fill.odb updated_clks.sdc 175 | ``` 176 | 177 | ## Basic design initialization 178 | 179 | ### Design configuration (config.mk) 180 | 181 | config.mk from the ibex example: 182 | 183 | [https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/master/flow/designs/sky130hd/ibex/config.mk](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/blob/master/flow/designs/sky130hd/ibex/config.mk) 184 | 185 | Tutorial about the design configuration; 186 | 187 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#design-configuration](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#design-configuration) 188 | 189 | ### 190 | 191 | ![Design config variables](pics_lecture/design_config_variables.png) 192 | 193 | ### Clock constraints (constraints.sdc) 194 | 195 | constraints.sdc from the ibex example: 196 | 197 | ``` 198 | current_design ibex_core 199 | 200 | set clk_name core_clock 201 | set clk_port_name clk_i 202 | set clk_period 10.0 203 | set clk_io_pct 0.2 204 | 205 | set clk_port [get_ports $clk_port_name] 206 | 207 | create_clock -name $clk_name -period $clk_period $clk_port 208 | 209 | set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port] 210 | 211 | set_input_delay [expr $clk_period * $clk_io_pct] -clock $clk_name $non_clock_inputs 212 | set_output_delay [expr $clk_period * $clk_io_pct] -clock $clk_name [all_outputs] 213 | ``` 214 | 215 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#timing-constraints](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#timing-constraints) 216 | 217 | ### Design Verilog input 218 | 219 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#design-input-verilog](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#design-input-verilog) 220 | 221 | These are the Verilog files of the ibex design example: 222 | 223 | ``` 224 | flow/designs/src/ibex$ ls 225 | 226 | ibex_alu.v ibex_ex_block.v ibex_register_file_ff.v prim_ram_1p.v 227 | ibex_branch_predict.v ibex_fetch_fifo.v ibex_register_file_fpga.v prim_secded_28_22_dec.v 228 | ibex_compressed_decoder.v ibex_icache.v ibex_register_file_latch.v prim_secded_28_22_enc.v 229 | ibex_controller.v ibex_id_stage.v ibex_wb_stage.v prim_secded_39_32_dec.v 230 | ibex_core.v ibex_if_stage.v LICENSE prim_secded_39_32_enc.v 231 | ibex_counter.v ibex_load_store_unit.v prim_badbit_ram_1p.v prim_secded_72_64_dec.v 232 | ibex_cs_registers.v ibex_multdiv_fast.v prim_clock_gating.v prim_secded_72_64_enc.v 233 | ibex_csr.v ibex_multdiv_slow.v prim_generic_clock_gating.v prim_xilinx_clock_gating.v 234 | ibex_decoder.v ibex_pmp.v prim_generic_ram_1p.v README.md 235 | ibex_dummy_instr.v ibex_prefetch_buffer.v prim_lfsr.v 236 | ``` 237 | 238 | ## Design tweaking 239 | 240 | - OpenROAD is build on many different tools 241 | - It does not feel consistent to configure the tools. 242 | - To find and understand the possiblities of improving a design via tweaking one must read the documentation of the tools. 243 | - It might take some time to become comforatable with tweaking. 244 | - Don't give up! 245 | 246 | ### 247 | In the following we present 248 | 249 | - some easy tweaking possibilities to start with 250 | 251 | A list of environment variables is here: 252 | 253 | [https://openroad-flow-scripts.readthedocs.io/en/latest/user/FlowVariables.html#environment-variables-for-the-openroad-flow-scripts](https://openroad-flow-scripts.readthedocs.io/en/latest/user/FlowVariables.html#environment-variables-for-the-openroad-flow-scripts) 254 | 255 | ### Synthesis AREA or SPEED 256 | 257 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#area-and-timing-optimization](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#area-and-timing-optimization) 258 | 259 | In a nutshell: 260 | 261 | - Set ABC_SPEED=1 or ABC_AREA=1 in the config.mk 262 | - Rerun. 263 | 264 | ### DIE_AREA and CORE_AREA 265 | 266 | - Set DIE_AREA and CORE_AREA in the config.mk 267 | - Rerun 268 | 269 | This is an examplefor the two variables, taken from the config.mk in the masked_aes example earlier. The comments contain a list of added spaces around the core area. 270 | 271 | masked_aes config.mk: 272 | ``` 273 | # (Sealring: roughly 60um) 274 | # I/O pads: 180um 275 | # Bondpads: 70um 276 | # Margin for core power ring: 20um 277 | # Total margin to core area: 270um 278 | export DIE_AREA = 0 0 940 940 279 | export CORE_AREA = 270 270 670 670 280 | ``` 281 | 282 | ### masked_aes areas 283 | 284 | The area calculations from the masked_aes config.mk in a GDS: 285 | 286 | ![Area of masked_aes](pics_lecture/gds_masked_aes.png) 287 | 288 | ### Density 289 | 290 | In a nutshell: 291 | 292 | - Change the PLACE_DENSITY value in the config 293 | - Value between 0.2 and 0.95 294 | - Rerun 295 | 296 | export PLACE_DENSITY ?= 0.88 297 | 298 | ### CORE_UTILIZATION 299 | 300 | In a nutshell: 301 | 302 | - Change the CORE_UTILIZATION value in the config 303 | - Value between 20 and 80 304 | - Rerun 305 | 306 | export CORE_UTILIZATION = 45 307 | 308 | ### Example for Utilization and Density with the ibex design 309 | 310 | In the ORFS tutorial is a tweak example with these two variables: 311 | 312 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#defining-placement-density](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#defining-placement-density) 313 | 314 | Read how this should change the GDS. 315 | 316 | ### Further reading on the topic 317 | 318 | - The chapters in the ORFS tutorial starting here: 319 | 320 | [https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#understanding-and-analyzing-openroad-flow-stages-and-results](https://openroad-flow-scripts.readthedocs.io/en/latest/tutorials/FlowTutorial.html#understanding-and-analyzing-openroad-flow-stages-and-results) 321 | 322 | - Synthesis Explorations 323 | - Floorplanning 324 | - Power Planning And Analysis 325 | - Macro or Standard Cell Placement 326 | - Timing Optimizations 327 | - Clock Tree Synthesis 328 | - ... 329 | 330 | ## Finishing a design 331 | 332 | ### Footprint for IOPads 333 | 334 | - A TCL script is needed to arrange the IOPads around the core design area. 335 | - This TCL script must be referenced in the config.mk: 336 | 337 | ``` 338 | export FOOTPRINT_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/footprint.tcl 339 | ``` 340 | 341 | A working example of such a footprint.tcl can be found inside the masked_aes example: 342 | 343 | masked_aes footprint.tcl: 344 | 345 | [https://github.com/HEP-Alliance/masked-aes-tapeout/blob/main/footprint.tcl](https://github.com/HEP-Alliance/masked-aes-tapeout/blob/main/footprint.tcl) 346 | 347 | ### Sealring 348 | 349 | - A sealring GDS must be generated and merged with the design GDS. 350 | - Information about how to create a sealring is available as an example in the masked_aes README: 351 | 352 | ![Sealring Information masked_aes](pics_lecture/masked_aes_sealring.png) 353 | 354 | ### 355 | 356 | [https://github.com/HEP-Alliance/masked-aes-tapeout/tree/main?tab=readme-ov-file#sealring](https://github.com/HEP-Alliance/masked-aes-tapeout/tree/main?tab=readme-ov-file#sealring) 357 | 358 | ### Metal fill 359 | 360 | - Ongoing issue discussion about the Metall fill: 361 | 362 | [https://github.com/IHP-GmbH/IHP-Open-PDK/pull/229](https://github.com/IHP-GmbH/IHP-Open-PDK/pull/229) 363 | 364 | It is solved and merged to the repo, but the issue is kept open for enhancement reasons. 365 | 366 | ![Metal fill information masked_aes](pics_lecture/masked_aes_metal_fill.png) 367 | 368 | 369 | 370 | 371 | -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/c07_questions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 07 Questions" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "Berkeley" 6 | colortheme: "seahorse" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/questions.png 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 7 - OpenROAD flow scripts - QUESTIONS 17 | 18 | Recap questions for Chapter 7 19 | 20 | ### Questions 21 | 22 | Questions about: 23 | 24 | ::: nonincremental 25 | 26 | - Power 27 | - Perfomance 28 | - Area 29 | - How to change? 30 | - Configuration of a design: 31 | * pdk specific configs 32 | * design specific configs 33 | - Structure of a design project in ORFS? 34 | 35 | 36 | -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/c07_training_bonus.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 07 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/bonus.jpg 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 7 - OpenROAD flow scripts - TRAINING - Bonus 17 | 18 | ## Show what you found out 19 | 20 | ##### Task: Present today at 3pm 21 | 22 | - Create 1-3 pictures of something that interests you 23 | - It should be related to the course 24 | - Present those pictures with a few words 25 | - Start is 15:00 (3 pm). 26 | 27 | ## Ideas 28 | 29 | - Compare two runs of the same design with different GDS 30 | - Show a 2.5D rendering in fancy colors 31 | - Find the most complex cell in the PDK in KLayout 32 | 33 | ## How to 34 | 35 | ##### Task: The pictures 36 | - Create a directory pics in your home directory 37 | - Save your pictures in pics 38 | - The names of the pictures must be: 39 | * A.png 40 | * B.png 41 | * C.png 42 | .... 43 | - Have them ready at 15:00 (3 pm) 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/c07_training_common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 07 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/common.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 7 - OpenROAD flow scripts - TRAINING - Common 17 | 18 | ## Save the ready examples 19 | 20 | - Some design runs were done in the previous chapters. 21 | 22 | ##### Task: Rename them 23 | 24 | - To a backup save of all these designs by renaming their directories. 25 | - How to rename them is described in C7-S3. 26 | - Try to find meaningfull renames: 27 | - date, time 28 | - versioning 29 | - optimization param 30 | 31 | ## Multiple runs 32 | 33 | - The lecture slides of C7-S3 explain how to do multiple runs (one after another) on the same design. 34 | 35 | ##### Task: Two runs - Same design 36 | - Make two runs with a different DENSITY for the gdc design 37 | - Compare the runs via their final GDS 38 | - Save both GDS as png images 39 | 40 | ## Reports 41 | 42 | The reports for power and area are needed for the upcoming training sessions. 43 | 44 | ##### Task: Read reports 45 | 46 | - Look up for the TCL commands for different reports, at least power and area. 47 | - Try the commands in the GUI TCL console with any already made design. 48 | 49 | ## LFSR: parameterized version 50 | 51 | ##### Task: LFSR width as parameter 52 | 53 | - Rewrite the LFSR Verilog with a parameter for the register width 54 | - Maybe parameterize the index of the feedback bits. 55 | - Run to get a GDS of this. 56 | 57 | ## LFSR (param version) optimize 58 | 59 | Optimize the LFSR param version in three different ways. 60 | 61 | ##### Task: Min clock period 62 | - Fix the length (make it long!) 63 | - Find the minimal clockperiod for your design. 64 | 65 | ##### Task: Max length 66 | - Fix the area 67 | - Find the maximum length for the LFSR 68 | 69 | ##### Task: Max density 70 | - Fix the length and area 71 | - Find the max density 72 | 73 | ## LFSR IOPads 74 | 75 | The LFSR has only very few inputs and outputs. This might be the most simple design for starting with to create a Padring with IOPads. 76 | 77 | ##### Task: footprint.tcl 78 | - Take the floorplan.tcl from masked_aes as an example 79 | - Create a floorplan.tcl for the LFSR 80 | - Run to a GDS 81 | 82 | ## gcd | LFSR | TT: Area change 83 | 84 | For this Task, use one (or more, one after another) of these designs: 85 | 86 | - gcd 87 | - LFSR 88 | - TinyTapeout 89 | - Some other own design 90 | 91 | ##### Task: Compare two areas 92 | - Keep the density fixed (Not too high, more relaxed) 93 | - Change the core area and rerun 94 | - Compare the GDS of two different versions 95 | 96 | ## gcd | LFSR | TT: Free area 97 | 98 | For this Task, use one (or more, one after another) of these designs: 99 | 100 | - gcd 101 | - LFSR 102 | - TinyTapeout 103 | - Some other own design 104 | 105 | ##### Task: Free area, changing the density 106 | - No contraint for an area. (Comment it out) 107 | - Experiment with a wide range of density. 108 | - How hogh/low can the desity be? 109 | - Does the power estimation change much? 110 | 111 | ## gcd | LFSR | TT: Uniform distributed heatmap 112 | 113 | For this Task, use one (or more, one after another) of these designs: 114 | 115 | - gcd 116 | - LFSR 117 | - TinyTapeout 118 | - Some other own design 119 | 120 | ##### Task: heatmap optimization 121 | - Choose one of the heatmaps in GUI 122 | - Make a suggestion of how to find a most uniform distributed heatmap design. 123 | - Try to build a GDS of that. 124 | - Compare to the "not optimized" version. Did you achive your goal? 125 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/pics_lecture/design_config_variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_07_OpenROAD_flow_scripts/pics_lecture/design_config_variables.png -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/pics_lecture/gds_masked_aes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_07_OpenROAD_flow_scripts/pics_lecture/gds_masked_aes.png -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/pics_lecture/masked_aes_metal_fill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_07_OpenROAD_flow_scripts/pics_lecture/masked_aes_metal_fill.png -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/pics_lecture/masked_aes_sealring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_07_OpenROAD_flow_scripts/pics_lecture/masked_aes_sealring.png -------------------------------------------------------------------------------- /Chapter_07_OpenROAD_flow_scripts/pics_lecture/orfs_intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_07_OpenROAD_flow_scripts/pics_lecture/orfs_intro.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/c08_lecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 07 Lecture" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "AnnArbor" 6 | colortheme: "crane" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/lecture.jpg 11 | date: 12 | section-titles: true 13 | toc: true 14 | --- 15 | 16 | # Chapter 8 - Tapeout 17 | 18 | ## Open-source Tapeout informations from IHP 19 | 20 | This chapter provides information about the Tapeout at IHP. 21 | Please follow the links to tag along with the chapter. 22 | 23 | ### IHP - Repositories structure 24 | 25 | - The designs for the open-source Tapeouts are collected as the "Open DesignLib". 26 | - During the process of each Tapeout there are dedicated repositories by the names TO_monthyear. 27 | - After Tapeout these designs shall be merged into the Open DesignLib repository. 28 | 29 | ### PDK and Open DesignLib 30 | 31 | - Open.source PDK: 32 | 33 | [https://github.com/IHP-GmbH/IHP-Open-PDK](https://github.com/IHP-GmbH/IHP-Open-PDK) 34 | 35 | - Open DesignLib: 36 | 37 | [https://github.com/IHP-GmbH/IHP-Open-DesignLib](https://github.com/IHP-GmbH/IHP-Open-DesignLib) 38 | 39 | ### TapeOut repositories (TO) 40 | 41 | - Tapeout May 2024: 42 | 43 | [https://github.com/IHP-GmbH/TO_May2024](https://github.com/IHP-GmbH/TO_May2024) 44 | 45 | - Tapeout Nov 2024: 46 | 47 | [https://github.com/IHP-GmbH/TO_Nov2024](https://github.com/IHP-GmbH/TO_Nov2024) 48 | 49 | - Tapeout Dec 2024: 50 | 51 | [https://github.com/IHP-GmbH/TO_Dec2024](https://github.com/IHP-GmbH/TO_Dec2024) 52 | 53 | ## READMEs 54 | 55 | ### README file in TO repositories 56 | Important notes: 57 | 58 | - Always look for the most actual and stable information 59 | - Tools and workflows change faast 60 | - Design rules don't change fast (if ever) 61 | - Most parts of the PDK are long term stable 62 | 63 | ### Submission process 64 | Screenshot from the [README TO_DEC2024](https://github.com/IHP-GmbH/TO_Dec2024/blob/main/README.md): 65 | 66 | ![Submission process](pics_lecture/submission_process.png) 67 | 68 | ### Physical constraints 69 | Screenshot from the [README TO_DEC2024](https://github.com/IHP-GmbH/TO_Dec2024/blob/main/README.md): 70 | 71 | ![Physical design constraints](pics_lecture/physical_constraints.png) 72 | 73 | ### Project structure 74 | Screenshot from the [README TO_DEC2024](https://github.com/IHP-GmbH/TO_Dec2024/blob/main/README.md): 75 | 76 | ![Directories in a project](pics_lecture/project_directory_structure.png) 77 | 78 | ### Design data structure 79 | Screenshot from the [README TO_DEC2024](https://github.com/IHP-GmbH/TO_Dec2024/blob/main/README.md): 80 | 81 | ![Design data in a project](pics_lecture/design_data_directory_structure.png) 82 | 83 | ### DRC 84 | 85 | During a submission to a Tapeout the design gets checked with a DRC via Github Actions. 86 | 87 | ![DRC via Github actions](pics_lecture/drc_actions.png) 88 | 89 | ## Read-the-docs 90 | 91 | - Open PDK Docu: 92 | 93 | [https://ihp-open-pdk-docs.readthedocs.io/en/latest/index.html](https://ihp-open-pdk-docs.readthedocs.io/en/latest/index.html) 94 | 95 | - Open DesignLib Docu: 96 | 97 | [https://ihp-open-ip.readthedocs.io/en/latest/](https://ihp-open-ip.readthedocs.io/en/latest/) 98 | 99 | ### README versus Read-the-docs 100 | 101 | - The README version is a extract of the full documentation (read-the-docs) for the DesignLib. 102 | - The read-the-docs version contains the Tapeout calender and further info 103 | 104 | ### Tapeout calendar 105 | 106 | ![Open DesignLib Tapeout Calendar](pics_lecture/tapeout_calendar.png) 107 | 108 | ### More submission information 109 | 110 | ![Submission process detailed](pics_lecture/submission_process_detail.png) 111 | 112 | ## The last steps to a successful Tapeout 113 | 114 | A few words about the finish of a Tapeout-ready GDS: 115 | 116 | - A successfull Tapeout for a producable, correct and working micorchip contains more steps and knowdledge. It is out of scope of the course to explain and tutor these all details about this knowledge. 117 | 118 | - Most of these steps will integrate into ORFS soon in a easy-to-use way eventually. 119 | 120 | ### Topic to watch in design 121 | 122 | Till then, here is a (not complete) list of important topics: 123 | 124 | - Placement and instanciation of the Input-Outputs. 125 | - Metall fills 126 | - Sealring construction 127 | - Automated DRC free 128 | 129 | ### Github Actions 130 | 131 | - Tapeout Nov 2024 Actions drc.yml: 132 | 133 | [https://github.com/IHP-GmbH/TO_Nov2024/blob/main/.github/workflows/drc.yml](https://github.com/IHP-GmbH/TO_Nov2024/blob/main/.github/workflows/drc.yml) 134 | 135 | - Tapeout Nov 2024 Actions runs: 136 | 137 | [https://github.com/IHP-GmbH/TO_Nov2024/actions](https://github.com/IHP-GmbH/TO_Nov2024/actions) 138 | 139 | ### Active development in ORFS 140 | 141 | Pull requests in ORFS with the search IHP in it: 142 | 143 | [https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/pulls?q=IHP+](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/pulls?q=IHP+) 144 | 145 | ![ORFS pull requests with IHP in it](pics_lecture/orfs_prs.png) 146 | 147 | ### 148 | 149 | Issues in ORFS (open and IHP in it): 150 | 151 | [https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues?q=is%3Aissue%20state%3Aopen%20IHP](https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues?q=is%3Aissue%20state%3Aopen%20IHP) 152 | 153 | ![ORFS issues, open and IHP in it](pics_lecture/orfs_issues_ihp.png) 154 | 155 | ### Workarounds (example masked_aes) 156 | 157 | The README of the design example from earlier (masked_aes) gives some basic, but sufficient information about the actual state and the workarounds. 158 | 159 | [https://github.com/HEP-Alliance/masked-aes-tapeout/blob/main/README.md](https://github.com/HEP-Alliance/masked-aes-tapeout/blob/main/README.md) 160 | 161 | ![Workarounds in masked_aes](pics_lecture/masked_aes_workarounds.png) 162 | 163 | ### Before your Tapeout 164 | 165 | If you plan to do a Tapeout with open-source to a Shuttlerun at IHP: 166 | 167 | - Get in touch with the people at IHP before submitting a GDS. 168 | - Inform yourself about the actual changes in the tools, the PDK and the submission repositories. 169 | - Look for recent examples from the CoreExpert Group. 170 | 171 | ### Non public and non open-source designs 172 | 173 | IMPORTANT NOTICE: 174 | 175 | - Using open-source doesn't mean you have to publish your work in open-source! 176 | 177 | With using the open-source EDA tools and the open-source IHP PDK it is possible 178 | 179 | - to design and fabricate closed source microchips at IHP. 180 | - to not make a design public. 181 | 182 | If you plan to do this: Talk to IHP! 183 | 184 | ## Contribute to open-source 185 | 186 | ### Contributing with Git 187 | 188 | If you waant to start contributing to open-source (maybe to this course?): 189 | 190 | - Create a Git account 191 | - Join a discussion about an issue. 192 | - When you discover an error, writ4e an issue yourself. 193 | 194 | It is really not much more then a ticket-system vi email. 195 | 196 | ### The Feedback to this course 197 | 198 | Your feedback will become issues in the course repository. Join in the discussion if you want to conrtribute: 199 | 200 | [https://github.com/OS-EDA/Course/issues?q=is%3Aissue](https://github.com/OS-EDA/Course/issues?q=is%3Aissue) 201 | 202 | ![Issue tracking in the course repository](pics_lecture/course_issues.png) 203 | 204 | -------------------------------------------------------------------------------- /Chapter_08_Tapeout/c08_questions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 08 Questions" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "Berkeley" 6 | colortheme: "seahorse" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/questions.png 11 | date: 12 | section-titles: false 13 | toc: false 14 | --- 15 | 16 | # Chapter 8 - Tapeout - QUESTIONS 17 | 18 | Recap questions for Chapter 8 19 | 20 | ### Questions 21 | ::: nonincremental 22 | 23 | - Where to find the reports, results and logs? 24 | - How to read them (name two ways)? 25 | - How to create a new design in the ORFS directory structure? 26 | - What is a IO-Pad? 27 | - Name some tuning parameters (round robin) 28 | - What is PPA? 29 | - How to submitt a Tepaout at IHP? 30 | - What parts a still in the making of ORFS to come soon? 31 | - Try to explain Sealring, IO-Cells, Filler-Cells, PDN. (Round robin) 32 | - What to do in case you discovered an error in ORFS? 33 | -------------------------------------------------------------------------------- /Chapter_08_Tapeout/c08_training_common.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chapter 08 Training" 3 | author: "Course authors (Git file)" 4 | aspectratio: 169 5 | theme: "CambridgeUS" 6 | colortheme: "rose" 7 | fonttheme: "professionalfonts" 8 | urlcolor: red 9 | linkstyle: bold 10 | logo: icons/common.jpg 11 | date: 12 | section-titles: false 13 | toc: true 14 | --- 15 | 16 | # Chapter 8 - Tapeout - TRAINING - Common 17 | 18 | 19 | -------------------------------------------------------------------------------- /Chapter_08_Tapeout/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/image.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/course_issues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/course_issues.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/design_data_directory_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/design_data_directory_structure.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/drc_actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/drc_actions.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/masked_aes_workarounds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/masked_aes_workarounds.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/orfs_issues_ihp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/orfs_issues_ihp.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/orfs_prs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/orfs_prs.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/physical_constraints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/physical_constraints.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/project_directory_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/project_directory_structure.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/submission_process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/submission_process.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/submission_process_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/submission_process_detail.png -------------------------------------------------------------------------------- /Chapter_08_Tapeout/pics_lecture/tapeout_calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/Chapter_08_Tapeout/pics_lecture/tapeout_calendar.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Digital Course 2 | Home of the open-source EDA digital course. 3 | 4 | Development of this course is funded by a public German project FMD-QNC (16ME083): 5 | https://www.elektronikforschung.de/projekte/fmd-qnc 6 | 7 | ### License 8 | Apache 2.0 9 | 10 | ### Code of conduct 11 | 12 | There is a code of conduct for this repository. Please read it. It is the same code of conduct as in the IHP open-source PDK. 13 | 14 | ## Course instance: 1 Week, hands on 15 | ![1 week](pics/course_week.png) 16 | 17 | ## Get the slides 18 | 19 | The course is written in Markdown files. 20 | Pandoc is used to build the slides from that markdown. 21 | An augmented LaTeX template is used and contained in the repository. 22 | 23 | 24 | There are three ways to get the course slides. 25 | 26 | ### 1. Release 27 | 28 | Download the lasted release in a packed container: 29 | https://github.com/OS-EDA/Course/releases 30 | 31 | This is the recommended way. 32 | 33 | ### 2. Pre-build pdf slides 34 | 35 | Download pre-build slides from the build directory. 36 | https://github.com/OS-EDA/Course/tree/main/build 37 | 38 | This option does not give much information about the consistency of the slide set. 39 | 40 | If you just want to have a look around or look for a single slides this is the way to go. 41 | 42 | ### 3. Build the slides 43 | 44 | #### Prerequisites 45 | * Tex Full installation including language english 46 | * Pandoc >= 3.4 47 | 48 | #### Build 49 | 50 | The shell script ```./generate_slides.sh``` builds the slides into the build folder. 51 | 52 | A pre-build slideset resides in the build folder. 53 | 54 | -------------------------------------------------------------------------------- /authors.md: -------------------------------------------------------------------------------- 1 | # Course authors: 2 | * Thorsten Knoll 3 | https://github.com/ThorKn 4 | * Steffen Reith 5 | 6 | -------------------------------------------------------------------------------- /build/all_slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/all_slides.pdf -------------------------------------------------------------------------------- /build/c00_preparations.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c00_preparations.pdf -------------------------------------------------------------------------------- /build/c01_lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c01_lecture.pdf -------------------------------------------------------------------------------- /build/c01_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c01_questions.pdf -------------------------------------------------------------------------------- /build/c01_training_advanced.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c01_training_advanced.pdf -------------------------------------------------------------------------------- /build/c01_training_bonus.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c01_training_bonus.pdf -------------------------------------------------------------------------------- /build/c01_training_common.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c01_training_common.pdf -------------------------------------------------------------------------------- /build/c02_lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c02_lecture.pdf -------------------------------------------------------------------------------- /build/c02_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c02_questions.pdf -------------------------------------------------------------------------------- /build/c02_training_advanced.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c02_training_advanced.pdf -------------------------------------------------------------------------------- /build/c02_training_common.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c02_training_common.pdf -------------------------------------------------------------------------------- /build/c03_lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c03_lecture.pdf -------------------------------------------------------------------------------- /build/c03_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c03_questions.pdf -------------------------------------------------------------------------------- /build/c03_training_advanced.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c03_training_advanced.pdf -------------------------------------------------------------------------------- /build/c03_training_common.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c03_training_common.pdf -------------------------------------------------------------------------------- /build/c04_lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c04_lecture.pdf -------------------------------------------------------------------------------- /build/c04_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c04_questions.pdf -------------------------------------------------------------------------------- /build/c04_training_advanced.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c04_training_advanced.pdf -------------------------------------------------------------------------------- /build/c04_training_bonus.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c04_training_bonus.pdf -------------------------------------------------------------------------------- /build/c04_training_common.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c04_training_common.pdf -------------------------------------------------------------------------------- /build/c05_lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c05_lecture.pdf -------------------------------------------------------------------------------- /build/c05_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c05_questions.pdf -------------------------------------------------------------------------------- /build/c05_training_advanced.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c05_training_advanced.pdf -------------------------------------------------------------------------------- /build/c05_training_bonus.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c05_training_bonus.pdf -------------------------------------------------------------------------------- /build/c05_training_common.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c05_training_common.pdf -------------------------------------------------------------------------------- /build/c06_lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c06_lecture.pdf -------------------------------------------------------------------------------- /build/c06_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c06_questions.pdf -------------------------------------------------------------------------------- /build/c06_training_common.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c06_training_common.pdf -------------------------------------------------------------------------------- /build/c07_lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c07_lecture.pdf -------------------------------------------------------------------------------- /build/c07_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c07_questions.pdf -------------------------------------------------------------------------------- /build/c07_training_bonus.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c07_training_bonus.pdf -------------------------------------------------------------------------------- /build/c07_training_common.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c07_training_common.pdf -------------------------------------------------------------------------------- /build/c08_lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c08_lecture.pdf -------------------------------------------------------------------------------- /build/c08_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c08_questions.pdf -------------------------------------------------------------------------------- /build/c08_training_common.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/build/c08_training_common.pdf -------------------------------------------------------------------------------- /generate_slides.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SOURCE_FMT="markdown_strict\ 4 | +simple_tables\ 5 | +pipe_tables\ 6 | +backtick_code_blocks\ 7 | +auto_identifiers\ 8 | +strikeout\ 9 | +yaml_metadata_block\ 10 | +implicit_figures\ 11 | +all_symbols_escapable\ 12 | +link_attributes\ 13 | +smart\ 14 | +fenced_divs" 15 | 16 | # Assumes the input is in the format: 'Chapter_NN_Title/cNN_name.md' 17 | function __get_default_output_name() { 18 | FILENAME="$(basename $(basename "$1") ".md")" 19 | echo "${FILENAME}.pdf" 20 | } 21 | 22 | function generate_chapter_slides() { 23 | local OUTPUT 24 | local S_FMT 25 | local TEMPLATE 26 | local INPUT 27 | 28 | while [[ $# > 0 ]] 29 | do 30 | case "$1" in 31 | -o|--output) 32 | OUTPUT="$2" 33 | shift 34 | shift 35 | ;; 36 | -f|--source-fmt) 37 | S_FMT="$2" 38 | shift 39 | shift 40 | ;; 41 | -t|--template) 42 | TEMPLATE="$2" 43 | shift 44 | shift 45 | ;; 46 | -i|--input) 47 | INPUT="$2" 48 | shift 49 | shift 50 | ;; 51 | --*|-*) 52 | echo "Unknown option: $1" 53 | return 1 54 | ;; 55 | *) 56 | echo "Unexpected input: '$1'" 57 | return 1 58 | ;; 59 | esac 60 | done 61 | 62 | OUTPUT="${OUTPUT:-"build/$(__get_default_output_name "${INPUT}")"}" 63 | S_FMT="${S_FMT:-"${SOURCE_FMT}"}" 64 | TEMPLATE="${TEMPLATE:-"pandoc/templates/default_mod.latex"}" 65 | 66 | OUTPUT_DIR="$(dirname "${OUTPUT}")" 67 | 68 | if [ ! -d "$OUTPUT_DIR" ] 69 | then 70 | echo "Creating output directory: ${OUTPUT_DIR}" 71 | mkdir -p "${OUTPUT_DIR}" 72 | fi 73 | 74 | pandoc -s \ 75 | --verbose \ 76 | --output="${OUTPUT}" \ 77 | --slide-level 2 \ 78 | --shift-heading-level=-1 \ 79 | --listings \ 80 | --toc \ 81 | --columns=50 \ 82 | -f "${S_FMT}" \ 83 | --template "${TEMPLATE}" \ 84 | --pdf-engine lualatex \ 85 | -t beamer \ 86 | --from=markdown+rebase_relative_paths \ 87 | "${INPUT}" 88 | } 89 | 90 | ALL_MD_FILES=($(find ./Chapter* -iname "*.md")) 91 | 92 | CUSTOM_OPTS=("./Chapter_01_Introduction/c01_training_common.md|--template "pandoc/templates/default_mod_old.latex"") 93 | for CUSTOM in "${CUSTOM_OPTS[@]}" 94 | do 95 | FILE="$(echo "${CUSTOM}" | cut -d '|' -f 1)" 96 | OPTS="$(echo "${CUSTOM}" | cut -d '|' -f 2)" 97 | echo "file with custom opts: ${FILE}" 98 | generate_chapter_slides --input "${FILE}" ${OPTS[@]} || exit $? 99 | done 100 | 101 | DEFAULT=() 102 | for FILE in "${ALL_MD_FILES[@]}" 103 | do 104 | if [[ "${FILE}" != "" ]] 105 | then 106 | DEFAULT+=("${FILE}") 107 | fi 108 | done 109 | 110 | for FILE in "${DEFAULT[@]}" 111 | do 112 | echo "running default build for file: ${FILE}" 113 | generate_chapter_slides --input "${FILE}" || exit $? 114 | done 115 | 116 | -------------------------------------------------------------------------------- /generate_slides_old.sh: -------------------------------------------------------------------------------- 1 | SOURCE_FORMAT="markdown_strict\ 2 | +simple_tables\ 3 | +pipe_tables\ 4 | +backtick_code_blocks\ 5 | +auto_identifiers\ 6 | +strikeout\ 7 | +yaml_metadata_block\ 8 | +implicit_figures\ 9 | +all_symbols_escapable\ 10 | +link_attributes\ 11 | +smart\ 12 | +fenced_divs" 13 | 14 | ############# 15 | # Chapter 0 # 16 | ############# 17 | # Lecture and Training 18 | pandoc -s \ 19 | --verbose \ 20 | --output=build/c00_preparations.pdf \ 21 | --slide-level 2 \ 22 | --shift-heading-level=-1 \ 23 | --listings \ 24 | --toc \ 25 | --columns=50 \ 26 | -f "$SOURCE_FORMAT" \ 27 | --template pandoc/templates/default_mod.latex \ 28 | --pdf-engine lualatex \ 29 | -t beamer \ 30 | --from=markdown+rebase_relative_paths \ 31 | Chapter_00_Preparations/c00_preparations.md 32 | 33 | ############# 34 | # Chapter 1 # 35 | ############# 36 | # Lecture 37 | pandoc -s \ 38 | --verbose \ 39 | --output=build/c01_lecture.pdf \ 40 | --slide-level 2 \ 41 | --shift-heading-level=-1 \ 42 | --listings \ 43 | --toc \ 44 | --columns=50 \ 45 | -f "$SOURCE_FORMAT" \ 46 | --template pandoc/templates/default_mod.latex \ 47 | -t beamer \ 48 | --from=markdown+rebase_relative_paths \ 49 | Chapter_01_Introduction/c01_lecture.md 50 | 51 | # Training common 52 | pandoc -s \ 53 | --verbose \ 54 | --output=build/c01_training_common.pdf \ 55 | --slide-level 2 \ 56 | --shift-heading-level=-1 \ 57 | --listings \ 58 | --toc \ 59 | --columns=50 \ 60 | -f "$SOURCE_FORMAT" \ 61 | --template pandoc/templates/default_mod_old.latex \ 62 | -t beamer \ 63 | --from=markdown+rebase_relative_paths \ 64 | Chapter_01_Introduction/c01_training_common.md 65 | 66 | pandoc -s \ 67 | --verbose \ 68 | --output=build/c01_training_advanced.pdf \ 69 | --slide-level 2 \ 70 | --shift-heading-level=-1 \ 71 | --listings \ 72 | --toc \ 73 | --columns=50 \ 74 | -f "$SOURCE_FORMAT" \ 75 | --template pandoc/templates/default_mod.latex \ 76 | -t beamer \ 77 | --from=markdown+rebase_relative_paths \ 78 | Chapter_01_Introduction/c01_training_advanced.md 79 | 80 | pandoc -s \ 81 | --verbose \ 82 | --output=build/c01_training_bonus.pdf \ 83 | --slide-level 2 \ 84 | --shift-heading-level=-1 \ 85 | --listings \ 86 | --toc \ 87 | --columns=50 \ 88 | -f "$SOURCE_FORMAT" \ 89 | --template pandoc/templates/default_mod.latex \ 90 | -t beamer \ 91 | --from=markdown+rebase_relative_paths \ 92 | Chapter_01_Introduction/c01_training_bonus.md 93 | 94 | # Questions 95 | pandoc -s \ 96 | --verbose \ 97 | --output=build/c01_questions.pdf \ 98 | --slide-level 2 \ 99 | --shift-heading-level=-1 \ 100 | --listings \ 101 | --toc \ 102 | --columns=50 \ 103 | -f "$SOURCE_FORMAT" \ 104 | --template pandoc/templates/default_mod.latex \ 105 | -t beamer \ 106 | --from=markdown+rebase_relative_paths \ 107 | Chapter_01_Introduction/c01_questions.md 108 | 109 | ############# 110 | # Chapter 2 # 111 | ############# 112 | # Lecture 113 | pandoc -s \ 114 | --verbose \ 115 | --output=build/c02_lecture.pdf \ 116 | --slide-level 2 \ 117 | --shift-heading-level=-1 \ 118 | --listings \ 119 | --toc \ 120 | --columns=50 \ 121 | -f "$SOURCE_FORMAT" \ 122 | --template pandoc/templates/default_mod.latex \ 123 | -t beamer \ 124 | --from=markdown+rebase_relative_paths \ 125 | Chapter_02_OpenROAD_tools/c02_lecture.md 126 | 127 | # Training common 128 | pandoc -s \ 129 | --verbose \ 130 | --output=build/c02_training_common.pdf \ 131 | --slide-level 2 \ 132 | --shift-heading-level=-1 \ 133 | --listings \ 134 | --toc \ 135 | --columns=50 \ 136 | -f "$SOURCE_FORMAT" \ 137 | --template pandoc/templates/default_mod.latex \ 138 | -t beamer \ 139 | --from=markdown+rebase_relative_paths \ 140 | Chapter_02_OpenROAD_tools/c02_training_common.md 141 | 142 | # Training advanced 143 | pandoc -s \ 144 | --verbose \ 145 | --output=build/c02_training_advanced.pdf \ 146 | --slide-level 2 \ 147 | --shift-heading-level=-1 \ 148 | --listings \ 149 | --toc \ 150 | --columns=50 \ 151 | -f "$SOURCE_FORMAT" \ 152 | --template pandoc/templates/default_mod.latex \ 153 | -t beamer \ 154 | --from=markdown+rebase_relative_paths \ 155 | Chapter_02_OpenROAD_tools/c02_training_advanced.md 156 | 157 | # Questions 158 | pandoc -s \ 159 | --verbose \ 160 | --output=build/c02_questions.pdf \ 161 | --slide-level 2 \ 162 | --shift-heading-level=-1 \ 163 | --listings \ 164 | --toc \ 165 | --columns=50 \ 166 | -f "$SOURCE_FORMAT" \ 167 | --template pandoc/templates/default_mod.latex \ 168 | -t beamer \ 169 | --from=markdown+rebase_relative_paths \ 170 | Chapter_02_OpenROAD_tools/c02_questions.md 171 | 172 | ############# 173 | # Chapter 3 # 174 | ############# 175 | # Lecture 176 | pandoc -s \ 177 | --verbose \ 178 | --output=build/c03_lecture.pdf \ 179 | --slide-level 2 \ 180 | --shift-heading-level=-1 \ 181 | --listings \ 182 | --toc \ 183 | --columns=50 \ 184 | -f "$SOURCE_FORMAT" \ 185 | --template pandoc/templates/default_mod.latex \ 186 | -t beamer \ 187 | --from=markdown+rebase_relative_paths \ 188 | Chapter_03_Verilog/c03_lecture.md 189 | 190 | # Training common 191 | pandoc -s \ 192 | --verbose \ 193 | --output=build/c03_training_common.pdf \ 194 | --slide-level 2 \ 195 | --shift-heading-level=-1 \ 196 | --listings \ 197 | --toc \ 198 | --columns=50 \ 199 | -f "$SOURCE_FORMAT" \ 200 | --template pandoc/templates/default_mod.latex \ 201 | -t beamer \ 202 | --from=markdown+rebase_relative_paths \ 203 | Chapter_03_Verilog/c03_training_common.md 204 | 205 | # Training advanced 206 | pandoc -s \ 207 | --verbose \ 208 | --output=build/c03_training_advanced.pdf \ 209 | --slide-level 2 \ 210 | --shift-heading-level=-1 \ 211 | --listings \ 212 | --toc \ 213 | --columns=50 \ 214 | -f "$SOURCE_FORMAT" \ 215 | --template pandoc/templates/default_mod.latex \ 216 | -t beamer \ 217 | --from=markdown+rebase_relative_paths \ 218 | Chapter_03_Verilog/c03_training_advanced.md 219 | 220 | # Questions 221 | pandoc -s \ 222 | --verbose \ 223 | --output=build/c03_questions.pdf \ 224 | --slide-level 2 \ 225 | --shift-heading-level=-1 \ 226 | --listings \ 227 | --toc \ 228 | --columns=50 \ 229 | -f "$SOURCE_FORMAT" \ 230 | --template pandoc/templates/default_mod.latex \ 231 | -t beamer \ 232 | --from=markdown+rebase_relative_paths \ 233 | Chapter_03_Verilog/c03_questions.md 234 | 235 | ############# 236 | # Chapter 4 # 237 | ############# 238 | # Lecture 239 | pandoc -s \ 240 | --verbose \ 241 | --output=build/c04_lecture.pdf \ 242 | --slide-level 2 \ 243 | --shift-heading-level=-1 \ 244 | --listings \ 245 | --toc \ 246 | --columns=50 \ 247 | -f "$SOURCE_FORMAT" \ 248 | --template pandoc/templates/default_mod.latex \ 249 | -t beamer \ 250 | --from=markdown+rebase_relative_paths \ 251 | Chapter_04_OpenROAD_first_run/c04_lecture.md 252 | 253 | # Training common 254 | pandoc -s \ 255 | --verbose \ 256 | --output=build/c04_training_common.pdf \ 257 | --slide-level 2 \ 258 | --shift-heading-level=-1 \ 259 | --listings \ 260 | --toc \ 261 | --columns=50 \ 262 | -f "$SOURCE_FORMAT" \ 263 | --template pandoc/templates/default_mod.latex \ 264 | -t beamer \ 265 | --from=markdown+rebase_relative_paths \ 266 | Chapter_04_OpenROAD_first_run/c04_training_common.md 267 | 268 | # Training advanced 269 | pandoc -s \ 270 | --verbose \ 271 | --output=build/c04_training_advanced.pdf \ 272 | --slide-level 2 \ 273 | --shift-heading-level=-1 \ 274 | --listings \ 275 | --toc \ 276 | --columns=50 \ 277 | -f "$SOURCE_FORMAT" \ 278 | --template pandoc/templates/default_mod.latex \ 279 | -t beamer \ 280 | --from=markdown+rebase_relative_paths \ 281 | Chapter_04_OpenROAD_first_run/c04_training_advanced.md 282 | 283 | # Training bonus 284 | pandoc -s \ 285 | --verbose \ 286 | --output=build/c04_training_bonus.pdf \ 287 | --slide-level 2 \ 288 | --shift-heading-level=-1 \ 289 | --listings \ 290 | --toc \ 291 | --columns=50 \ 292 | -f "$SOURCE_FORMAT" \ 293 | --template pandoc/templates/default_mod.latex \ 294 | -t beamer \ 295 | --from=markdown+rebase_relative_paths \ 296 | Chapter_04_OpenROAD_first_run/c04_training_bonus.md 297 | 298 | # Questions 299 | pandoc -s \ 300 | --verbose \ 301 | --output=build/c04_questions.pdf \ 302 | --slide-level 2 \ 303 | --shift-heading-level=-1 \ 304 | --listings \ 305 | --toc \ 306 | --columns=50 \ 307 | -f "$SOURCE_FORMAT" \ 308 | --template pandoc/templates/default_mod.latex \ 309 | -t beamer \ 310 | --from=markdown+rebase_relative_paths \ 311 | Chapter_04_OpenROAD_first_run/c04_questions.md 312 | 313 | ############# 314 | # Chapter 5 # 315 | ############# 316 | # Lecture 317 | pandoc -s \ 318 | --verbose \ 319 | --output=build/c05_lecture.pdf \ 320 | --slide-level 2 \ 321 | --shift-heading-level=-1 \ 322 | --listings \ 323 | --toc \ 324 | --columns=50 \ 325 | -f "$SOURCE_FORMAT" \ 326 | --template pandoc/templates/default_mod.latex \ 327 | -t beamer \ 328 | --from=markdown+rebase_relative_paths \ 329 | Chapter_05_PDK/c05_lecture.md 330 | 331 | #Training common 332 | pandoc -s \ 333 | --verbose \ 334 | --output=build/c05_training_common.pdf \ 335 | --slide-level 2 \ 336 | --shift-heading-level=-1 \ 337 | --listings \ 338 | --toc \ 339 | --columns=50 \ 340 | -f "$SOURCE_FORMAT" \ 341 | --template pandoc/templates/default_mod.latex \ 342 | -t beamer \ 343 | --from=markdown+rebase_relative_paths \ 344 | Chapter_05_PDK/c05_training_common.md 345 | 346 | # #Training advanced 347 | pandoc -s \ 348 | --verbose \ 349 | --output=build/c05_training_advanced.pdf \ 350 | --slide-level 2 \ 351 | --shift-heading-level=-1 \ 352 | --listings \ 353 | --toc \ 354 | --columns=50 \ 355 | -f "$SOURCE_FORMAT" \ 356 | --template pandoc/templates/default_mod.latex \ 357 | -t beamer \ 358 | --from=markdown+rebase_relative_paths \ 359 | Chapter_05_PDK/c05_training_advanced.md 360 | 361 | #Training bonus 362 | pandoc -s \ 363 | --verbose \ 364 | --output=build/c05_training_bonus.pdf \ 365 | --slide-level 2 \ 366 | --shift-heading-level=-1 \ 367 | --listings \ 368 | --toc \ 369 | --columns=50 \ 370 | -f "$SOURCE_FORMAT" \ 371 | --template pandoc/templates/default_mod.latex \ 372 | -t beamer \ 373 | --from=markdown+rebase_relative_paths \ 374 | Chapter_05_PDK/c05_training_bonus.md 375 | 376 | # Questions 377 | pandoc -s \ 378 | --verbose \ 379 | --output=build/c05_questions.pdf \ 380 | --slide-level 2 \ 381 | --shift-heading-level=-1 \ 382 | --listings \ 383 | --toc \ 384 | --columns=50 \ 385 | -f "$SOURCE_FORMAT" \ 386 | --template pandoc/templates/default_mod.latex \ 387 | -t beamer \ 388 | --from=markdown+rebase_relative_paths \ 389 | Chapter_05_PDK/c05_questions.md 390 | 391 | ############# 392 | # Chapter 6 # 393 | ############# 394 | #Lecture 395 | pandoc -s \ 396 | --verbose \ 397 | --output=build/c06_lecture.pdf \ 398 | --slide-level 2 \ 399 | --shift-heading-level=-1 \ 400 | --listings \ 401 | --toc \ 402 | --columns=50 \ 403 | -f "$SOURCE_FORMAT" \ 404 | --template pandoc/templates/default_mod.latex \ 405 | -t beamer \ 406 | --from=markdown+rebase_relative_paths \ 407 | Chapter_06_OpenROAD_gui/c06_lecture.md 408 | 409 | #Training common 410 | pandoc -s \ 411 | --verbose \ 412 | --output=build/c06_training_common.pdf \ 413 | --slide-level 2 \ 414 | --shift-heading-level=-1 \ 415 | --listings \ 416 | --toc \ 417 | --columns=50 \ 418 | -f "$SOURCE_FORMAT" \ 419 | --template pandoc/templates/default_mod.latex \ 420 | -t beamer \ 421 | --from=markdown+rebase_relative_paths \ 422 | Chapter_06_OpenROAD_gui/c06_training_common.md 423 | 424 | # Questions 425 | pandoc -s \ 426 | --verbose \ 427 | --output=build/c06_questions.pdf \ 428 | --slide-level 2 \ 429 | --shift-heading-level=-1 \ 430 | --listings \ 431 | --toc \ 432 | --columns=50 \ 433 | -f "$SOURCE_FORMAT" \ 434 | --template pandoc/templates/default_mod.latex \ 435 | -t beamer \ 436 | --from=markdown+rebase_relative_paths \ 437 | Chapter_06_OpenROAD_gui/c06_questions.md 438 | 439 | ############# 440 | # Chapter 7 # 441 | ############# 442 | #Lecture 443 | pandoc -s \ 444 | --verbose \ 445 | --output=build/c07_lecture.pdf \ 446 | --slide-level 2 \ 447 | --shift-heading-level=-1 \ 448 | --listings \ 449 | --toc \ 450 | --columns=50 \ 451 | -f "$SOURCE_FORMAT" \ 452 | --template pandoc/templates/default_mod.latex \ 453 | -t beamer \ 454 | --from=markdown+rebase_relative_paths \ 455 | Chapter_07_OpenROAD_flow_scripts/c07_lecture.md 456 | 457 | #Training common 458 | pandoc -s \ 459 | --verbose \ 460 | --output=build/c07_training_common.pdf \ 461 | --slide-level 2 \ 462 | --shift-heading-level=-1 \ 463 | --listings \ 464 | --toc \ 465 | --columns=50 \ 466 | -f "$SOURCE_FORMAT" \ 467 | --template pandoc/templates/default_mod.latex \ 468 | -t beamer \ 469 | --from=markdown+rebase_relative_paths \ 470 | Chapter_07_OpenROAD_flow_scripts/c07_training_common.md 471 | 472 | #Training bonus 473 | pandoc -s \ 474 | --verbose \ 475 | --output=build/c07_training_bonus.pdf \ 476 | --slide-level 2 \ 477 | --shift-heading-level=-1 \ 478 | --listings \ 479 | --toc \ 480 | --columns=50 \ 481 | -f "$SOURCE_FORMAT" \ 482 | --template pandoc/templates/default_mod.latex \ 483 | -t beamer \ 484 | --from=markdown+rebase_relative_paths \ 485 | Chapter_07_OpenROAD_flow_scripts/c07_training_bonus.md 486 | 487 | # Questions 488 | pandoc -s \ 489 | --verbose \ 490 | --output=build/c07_questions.pdf \ 491 | --slide-level 2 \ 492 | --shift-heading-level=-1 \ 493 | --listings \ 494 | --toc \ 495 | --columns=50 \ 496 | -f "$SOURCE_FORMAT" \ 497 | --template pandoc/templates/default_mod.latex \ 498 | -t beamer \ 499 | --from=markdown+rebase_relative_paths \ 500 | Chapter_07_OpenROAD_flow_scripts/c07_questions.md 501 | 502 | ############# 503 | # Chapter 8 # 504 | ############# 505 | #Lecture 506 | pandoc -s \ 507 | --verbose \ 508 | --output=build/c08_lecture.pdf \ 509 | --slide-level 2 \ 510 | --shift-heading-level=-1 \ 511 | --listings \ 512 | --toc \ 513 | --columns=50 \ 514 | -f "$SOURCE_FORMAT" \ 515 | --template pandoc/templates/default_mod.latex \ 516 | -t beamer \ 517 | --from=markdown+rebase_relative_paths \ 518 | Chapter_08_Tapeout/c08_lecture.md 519 | 520 | #Training common 521 | pandoc -s \ 522 | --verbose \ 523 | --output=build/c08_training_common.pdf \ 524 | --slide-level 2 \ 525 | --shift-heading-level=-1 \ 526 | --listings \ 527 | --toc \ 528 | --columns=50 \ 529 | -f "$SOURCE_FORMAT" \ 530 | --template pandoc/templates/default_mod.latex \ 531 | -t beamer \ 532 | --from=markdown+rebase_relative_paths \ 533 | Chapter_08_Tapeout/c08_training_common.md 534 | 535 | # Questions 536 | pandoc -s \ 537 | --verbose \ 538 | --output=build/c08_questions.pdf \ 539 | --slide-level 2 \ 540 | --shift-heading-level=-1 \ 541 | --listings \ 542 | --toc \ 543 | --columns=50 \ 544 | -f "$SOURCE_FORMAT" \ 545 | --template pandoc/templates/default_mod.latex \ 546 | -t beamer \ 547 | --from=markdown+rebase_relative_paths \ 548 | Chapter_08_Tapeout/c08_questions.md 549 | -------------------------------------------------------------------------------- /icons/advanced.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/advanced.jpg -------------------------------------------------------------------------------- /icons/advanced.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/advanced.odg -------------------------------------------------------------------------------- /icons/advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/advanced.png -------------------------------------------------------------------------------- /icons/bonus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/bonus.jpg -------------------------------------------------------------------------------- /icons/bonus.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/bonus.odg -------------------------------------------------------------------------------- /icons/bonus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/bonus.png -------------------------------------------------------------------------------- /icons/cheatsheet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/cheatsheet.jpg -------------------------------------------------------------------------------- /icons/cheatsheet.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/cheatsheet.odg -------------------------------------------------------------------------------- /icons/cheatsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/cheatsheet.png -------------------------------------------------------------------------------- /icons/common.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/common.jpg -------------------------------------------------------------------------------- /icons/common.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/common.odg -------------------------------------------------------------------------------- /icons/common.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/common.png -------------------------------------------------------------------------------- /icons/lecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/lecture.jpg -------------------------------------------------------------------------------- /icons/lecture.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/lecture.odg -------------------------------------------------------------------------------- /icons/lecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/lecture.png -------------------------------------------------------------------------------- /icons/questions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/questions.jpg -------------------------------------------------------------------------------- /icons/questions.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/questions.odg -------------------------------------------------------------------------------- /icons/questions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/questions.png -------------------------------------------------------------------------------- /icons/training.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/training.jpg -------------------------------------------------------------------------------- /icons/training.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/training.odg -------------------------------------------------------------------------------- /icons/training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/icons/training.png -------------------------------------------------------------------------------- /pics/course_week.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/pics/course_week.odp -------------------------------------------------------------------------------- /pics/course_week.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/pics/course_week.pdf -------------------------------------------------------------------------------- /pics/course_week.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/pics/course_week.png -------------------------------------------------------------------------------- /pics/qrcode_course_repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OS-EDA/Course/a980bbe7e8b04fc49920b591781b2cb893137b4b/pics/qrcode_course_repo.png -------------------------------------------------------------------------------- /pics/qrcode_course_repo.svg: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------