This repository is a project template for the IIC-OSIC-TOOLS (https://github.com/iic-jku/IIC-OSIC-TOOLS) analog design workflow, preconfigured for the GlobalFoundries 180nm PDK (gf180mcuD).
When you use this template, you get:
- Pre-configured Docker environment with IIC-OSIC-TOOLS and GlobalFoundries 180nm PDK
- Cross-platform scripts for launching the containerized design environment
- Example analog design (5-Transistor OTA) with proper library structure and testbench
- Library organization standards with validation scripts
- VNC and web-based GUI access for design tools like Xschem, Magic, and KLayout
Before you begin, you'll need to install the following 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 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 WSL2 enabled
- 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.
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 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_vnc.shOpen Command Prompt or PowerShell navigate to you repository, and use the following command:
.\start_vnc.batIf you are familiar with git bash, feel free to use start_vnc.sh.
This will take a while to pull the latest IIC-OSIC-TOOLS 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:
- Right-click on the desktop
- Select "Terminal Emulator" (or similar option)
- You should automatically be in the
/foss/designsdirectory
The /foss/designs directory inside the Docker container is mounted from the designs folder in this repository.
Important: Keep all your design files within the designs folder to ensure they persist when the Docker container is restarted.
project-root/
├── designs/ # Your design files (mounted in container as /foss/designs)
│ ├── libs/ # Design libraries
│ ├── simulations/ # Simulation results
│ └── setup_pdk.sh # PDK setup script
├── start_vnc.sh # Container launch script (Unix/Linux/Mac)
├── start_vnc.bat # Container launch script (Windows)
└── README.md # This file
Run the following command inside the terminal within the VNC session to set up the GlobalFoundries 180nm PDK:
source setup_pdk.shLaunch Xschem for schematic design:
xschemYou should see the Xschem GUI with available devices from gf180mcu and their testbenches.
Docker container fails to start:
- Ensure Docker Desktop is running
- Check if ports 5901 and 80 are not in use by other applications
- On Windows, ensure WSL2 is properly configured
Cannot connect via VNC:
- Verify the container is running:
docker ps - Check firewall settings
- Try connecting to
127.0.0.1:5901instead oflocalhost:5901
Permission issues on Linux:
- Add your user to the docker group:
sudo usermod -aG docker $USER - Log out and log back in
If you encounter issues:
- Check the container logs:
docker logs <container-name> - Restart the container: Stop and run the launch script again
- Create an issue in the repository for persistent problems
The project follows specific naming conventions for organizing design libraries under /designs/libs/:
/designs/libs/
├── core_*/ # Design libraries (core functionality)
├── tb_*/ # Testbench libraries
└── ...
core_*: Design libraries containing your core circuit implementationstb_*: 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
Use the provided sanity check script to validate your library structure:
cd designs/CI
./library_check.shThis script verifies:
- Proper directory hierarchy (no files at inappropriate levels)
- Correct file naming conventions for design libraries
- Exempts testbench libraries from strict naming requirements
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.





