This repository is an analog design project template for the SSCS 2025 Chipathon (https://github.com/sscs-ose/sscs-chipathon-2025). The design environment is setup using the IIC-OSIC-TOOLS docker container (https://github.com/iic-jku/IIC-OSIC-TOOLS). The container is preconfigured with GlobalFoundries 180nm PDK (gf180mcuD).
When you use this template, you get:
- Pre-configured Docker environment with IIC-OSIC-TOOLS and GlobalFoundries 180nm PDK
- VNC and web-based GUI access for design tools like Xschem, Ngspice, Magic, and KLayout
- Cross-platform scripts for launching the containerized design environment
- Example analog schematic and layout design (5-Transistor OTA) with proper library structure and testbench
First, review this document to get a sense of how the various pieces of software work together on your computer.
Before you begin, you'll need to install the following required software:
- Download: GitHub Desktop
- Available for Windows, macOS, and Linux
- Provides a user-friendly graphical interface for Git operations
You don't have to know how to use the git
command. Although learning it helps you understand how the version control works. If you are an experienced user, feel free to manage your repository from the command-line interface (CLI).
docker
is a lightweight, container-based alternative to virtual machines that ensures consistent development and deployment environments across different platforms by packaging applications with all their dependencies. Docker Desktop is its graphical user interface (GUI).
Download and Installation:
- Windows: Docker Desktop for Windows
- macOS: Docker Desktop for Mac
- Linux: Docker Desktop for Linux or Docker Engine
System Requirements:
- Windows: Windows 10/11 with WSL 2 enabled
Note: Windows Subsystem for Linux (WSL 2) provides the lightweight virtualization layer that Docker Desktop relies on for Linux containers. If WSL 2 is not yet installed on your machine, follow Microsoft’s official guide: https://learn.microsoft.com/windows/wsl/install. After WSL 2 is enabled, Docker Desktop will automatically detect it; see Docker’s documentation for details: https://docs.docker.com/desktop/windows/wsl/.
- macOS: macOS 10.15 or newer
- Linux: 64-bit distribution with kernel 3.10+
In this project we will be using the IIC-OSIC-TOOLS docker (https://github.com/iic-jku/IIC-OSIC-TOOLS) to setup our development environments.
For the detailed branching and pull-request process see docs/team_workflow.md.
In brief:
- The team leader creates the repository from this template and adds teammates as collaborators.
- Every contributor works on a dedicated feature branch and opens a pull request for review before merging into
main
.
This repository is set up as a GitHub template. Using the template feature gives you a clean project without the template's commit history.
- Visit the template repository: https://github.com/Jianxun/iic-osic-tools-project-template/
- Click the green "Use this template" button
- Select "Create a new repository"
- Fill in your repository details:
- Repository name (e.g.,
my-analog-design-project
) - Description (optional)
- Choose public or private
- Repository name (e.g.,
- Click "Create repository"
Clone your new repository to your local machine using GitHub Desktop:
- Open GitHub Desktop
- Click "Clone a repository from the Internet"
- Select your newly created repository
- Choose your local directory and click "Clone"
The project includes platform-specific scripts to launch the Docker container with the IIC-OSIC-TOOLS environment. Before running the following scripts, make sure your Docker Desktop is running.
Open a terminal, navigate to you repository, and use the following command:
./start_chipathon_vnc.sh
Open Command Prompt or PowerShell navigate to you repository, and use the following command:
.\start_chipathon_vnc.bat
If you are familiar with git bash, feel free to use start_chipathon_vnc.sh
.
Now the script pulls the IIC-OSIC-TOOLS chipathon image. Have a coffee.
Once the container is running, you have two options to access the design environment:
-
Download a VNC client:
-
Connect to:
localhost:5901
-
Enter password:
abc123
- Open your web browser
- Navigate to:
http://localhost
- Enter password:
abc123
- Click "Connect"
Once you're in the VNC session, you can start running the design tools in the containter:
- Right-click on the desktop
- Select "Terminal Emulator" (or similar option)
- You should automatically be in the
/foss/designs
directory
You can now start the design tools from the terminal.
Launch Xschem for schematic design:
xschem
You should see the Xschem GUI with available devices from gf180mcu
and their testbenches. Xschem has UI buttons to netlist and simulate your schematic. You can display results in Xschem or GAW (an external viewer).
See the recommended schematic workflow docs/schematic_workflow.md
Launch Klayout for layout design:
./scripts/klayout_start.sh
See the recommended layout workflow with Klayout docs/layout_workflow.md
You can launch the other design tools with their appropriate commands. Take a look at this document for a brief overview of the analog full custom design CAD flow.
Once you have run the script for the first time, the container can be started much quicker.
- Open a terminal or shell on your local machine, go to the local folder that holds your local repo and execute
./start_chipathon_vnc.sh
or.\start_chipathon_vnc.bat
; see Step 2 above. Since the container exists, you will get the following prompt:
> ./start_chipathon_vnc.sh
[WARNING] Container iic-osic-tools_chipathon_xvnc_uid_501 exists.
[HINT] It can also be restarted with "docker start iic-osic-tools_chipathon_xvnc_uid_501" or removed with "docker rm iic-osic-tools_chipathon_xvnc_uid_501" if required.
Press "s" to start, and "r" to remove:
-
Hit
s
to start the container.- Note: You can also start the container from the Docker Desktop and directly connect with VNC (next step).
-
Connect to the running container with VNC or your browser see Step 3 above.
-
Start using the tools Steps 4, 5, 6 above
A strict file management strategy is required to keep the project and file management easy for a successful tape-out. Here we propose a folder structure that we think will work well, but of course, other organizations are possible. It's key to communicate among team members and to stick to the chosen approach.
The /foss/designs
directory inside the Docker container is mounted from the designs
folder in the local copy of this repository on your computer.
Important: Keep all your design files in the designs
folder to ensure they persist when the Docker container is restarted. Files in other folders inside the container might be deleted, and will for sure be lost if the container gets deleted.
project-root/
├── designs/ # Your design files (mounted in container as /foss/designs)
│ ├── libs/ # Design libraries
│ ├── simulations/ # Symbolic link to the Xschem simulation result folder
│ └── scripts # scripts for launching tools and library maintenance
├── start_chipathon_vnc.sh # Container launch script (Unix/Linux/Mac)
├── start_chipathon_vnc.bat # Container launch script (Windows)
└── README.md # This file
FYI: /foss/designs/simulations
is a symbolic link to /headless/.xschem/simulations
where xschem
asks ngspice
to save its simulation results.
The project follows specific naming conventions for organizing design libraries under /designs/libs/
:
/designs/libs/
├── core_*/ # Design libraries (core circuit cells)
├── tb_*/ # Testbench libraries
└── ...
core_*
: Design libraries containing your core circuit implementations.tb_*
: Testbench libraries containing simulation and verification setups.
Within each library directory:
- Each cell should have its own subdirectory:
/designs/libs/library_name/cell_name/
- Files within a cell directory should be prefixed with the cell name (e.g.,
cell_name.sch
,cell_name.sym
) - Exception: Testbench directories (starting with
tb_
) are exempt from the file naming prefix requirement
This project includes a reference design to demonstrate the library structure and design flow:
- Design: 5-Transistor Single Stage Operational Transconductance Amplifier (OTA)
- Library Location:
core_analog
- Testbench Location:
tb_analog
- Design Files: Navigate to
/designs/libs/core_analog/
to find the schematics and symbols of the OTA cell and parameterized unit transistor cells. - Testbench: Use the verification setups in
/designs/libs/tb_analog/
to simulate and characterize the design. - Validation: Run the library check to ensure proper file organization:
cd designs/CI ./library_check.sh
This example demonstrates the proper use of the library naming conventions (core_*
for design libraries, tb_*
for testbenches) and serves as a starting point for developing your own analog circuits.
This project is licensed under the MIT License. See the LICENSE file for details.