Skip to content

Emin017/ieda-infra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

✨ ieda infrastructure

GitHub GitHub workflows GitHub issues GitHub pull requests GitHub release (latest by date)

GitHub stars GitHub forks

English 中文

Project Introduction

ieda-infra is a toolkit that provides development and runtime environments for iEDA. iEDA is an open-source EDA infrastructure and toolchain for ASIC design from netlist to GDS. This project offers a Nix-based development environment with all dependencies integrated for iEDA.

Features

  • 📦 Complete dependency management based on Nix
  • 🔄 Offline development environment support
  • 🐳 Pre-configured Docker images
  • 🛠️ Multi-platform support (x86_64/aarch64, Linux/macOS)
  • ⚙️ Integration of all iEDA dependencies

System Requirements

  • Supported operating systems:
    • Linux (x86_64, aarch64)
    • macOS (x86_64, aarch64)
  • Nix (flakes feature required)

Usage Guide

Building iEDA with Nix

# Build and install iEDA with Nix
nix build -L github:Emin017/ieda-infra#ieda

Note

We provide hydra builds for x86_64 architecture, which can be found in Hydra Builds

You can use the binary cache to speed up the build process:

nix build -L github:Emin017/ieda-infra#iedaUnstable \
  --option substituters "https://serve.eminrepo.cc/" \
  --option trusted-public-keys "serve.eminrepo.cc:fgdTGDMn75Z0NOvTmus/Z9Fyh6ExgoqddNVkaYVi5qk="

Packaging iEDA with Dependencies

# Package iEDA with all dependencies
# As RPM format
nix bundle -L --bundler github:NixOS/bundlers#toRPM github:Emin017/ieda-infra#ieda
# As DEB format
nix bundle -L --bundler github:NixOS/bundlers#toDEB github:Emin017/ieda-infra#ieda
# The generated packages can be used in offline environments

Building Docker Image

# Build Docker image
nix build github:Emin017/ieda-infra#releaseDocker

iEDA Offline Compilation Environment Package

# Build offline package
nix build -L github:Emin017/ieda-infra#offlineDevBundle

# The generated package can be copied to offline environments for compiling iEDA

Using in Offline Environments

Using RPM as an example:

  1. Copy the built rpm-single-nix-env-wrapper-bin-nix-env-wrapper/nix-env-wrapper-bin-nix-env-wrapper-1.0-1.x86_64.rpm to the target environment
  2. Install with yum: nix-env-wrapper-bin-nix-env-wrapper-1.0-1.x86_64.rpm
  3. Run the nix-env-wrapper script to enter the development environment
  4. Follow the normal workflow to develop or build iEDA

Project Structure

ieda-infra/
├── flake.nix              # Nix Flake configuration
├── nix/
│   ├── overlay.nix        # Nix overlay configuration
│   ├── pkgs/              # Package definitions
│   │   ├── ieda/          # iEDA main package
│   │   └── rustpkgs/      # Rust dependency packages
│   └── env/               # Environment configurations
│       ├── offline/       # Offline environment
│       └── docker.nix     # Docker image configuration
└── README.md              # Project documentation

Contribution Guidelines

Contributions of any form are welcome!

  1. Fork this repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the Mulan Permissive Software License v2 (Mulan PSL v2). See the LICENSE file for details.

Related Projects

  • iEDA - Open-source EDA infrastructure and tools
  • Nix - Reproducible package manager

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages