iEDA 主页:ieda.oscc.cc
- About “i”in iEDA
- Meaning 1: Infrastructure
- Meaning 2: Intelligent
- The goal of the iEDA project
- EDA Infrastructure
- High quality and performance EDA tool
- Open-source is not a goal but a way
- Enhance the infrastructure to support more design requirement
- Complete the EDA tool chain from RTL-GDS II
- Improve the quality and performance of all EDA tool operations
- Construct AI for EDA platform and introduce trained AI model to the EDA platform
- Build data system with enough chip design and labeling process data
- Achieve the adaptability of the EDA platform for cloud-native
🎉 最新消息:
关注我们5月9日在南京 ISEDA-2023, Session 2 的报告 iEDA: An Open-Source Intelligent Physical lmplementation Toolkit and Library [paper, slides],和 Panel 6 的讨论 Open-source EDA and Standards
- ISEDA 2023: iEDA:An Open-Source Intelligent Physical Implementation Toolkit and Library [paper, slides]
使用 iEDA 进行芯片设计,需首先获得 iEDA 可执行文件。
若您需要对 iEDA 进行修改,通过源码构建,请按照顺序阅读。
您也可以直接使用最新的 release docker 镜像,即可跳过 "1. 源码构建 iEDA"。
PS: 关于如何安装 Docker,可参考Docker安装及初始化。
我们提供两种源码构建 iEDA 的方法作为示例。
从 Dockerhub 上下载最新的 iedaopensource/base 镜像,镜像中包含了最新的 master 分支代码和依赖(构建工具和依赖库)。也可使用 -v
命令挂载自行下载的 iEDA 代码仓库,仅使用镜像提供的编译工具和依赖库进行构建。
参考如下命令,进入容器后的当前目录即为 iEDA master 分支代码。
# iedaopensource/base:(latest, ubuntu, debian)
docker run -it --rm iedaopensource/base:latest bash
# 进入容器后执行 build.sh 进行构建
bash build.sh
# 若能够正常输出 "Hello iEDA!" 则编译成功
./bin/iEDA -script scripts/hello.tcl
根据个人使用习惯,有 ubuntu(基于Ubuntu20.04)和 debian(基于Debian11)两种不同镜像tag可选。
在 Ubuntu 20.04 下执行如下命令:
# 下载iEDA仓库
git clone https://gitee.com/oscc-project/iEDA.git iEDA && cd iEDA
# 通过apt安装编译依赖,需要root权限
sudo bash build.sh -i apt
# 编译 iEDA
bash build.sh
# 若能够正常输出 "Hello iEDA!" 则编译成功
./bin/iEDA -script scripts/hello.tcl
这里提供两种 iEDA 的运行方法作为参考。
关于 iEDA 的使用,参考 Tcl 命令手册 和 src/operation
下各工具的说明文档readme。
若需要使用自定义的工艺和设计,可将相关的文件挂载到容器中运行。关于目录结构和相关配置文件,可参考 scripts/sky130
中的示例。
docker run -it -v ${工艺和设计目录}:${容器内目录} --rm iedaopensource/release:latest
参考 scripts/sky130
中的文件目录格式,添加 iEDA 可执行文件路径到系统$PATH变量,运行 sh run_iEDA.sh
,在 result
文件夹中查看运行结果。
iEDA/scripts/sky130
├── iEDA_config # iEDA parameters configuration files
├── lef # lef files
├── lib # lib files
├── result # iEDA result output files
├── script # Tcl script files
├── sdc # sdc files
├── run_iEDA.py # Python3 script for running iEDA
└── run_iEDA.sh # POSIX shell script for running iEDA
Fork 此 iEDA 仓库,修改代码后提交 Pull Request。
请注意 iEDA 使用的编程规范。
- 新建 issue,我们将及时反馈。
- QQ 群:793409748
- 微信讨论群:
在iEDA的开发过程中,我们采用了来自开源社区的子模块。具体情况如下:
子模块 | 来源 | 详细用途 |
---|---|---|
flute3 | FastRoute | 借助flute3来产生rectange steiner tree. |
abseil-cpp | Google abseil | 使用Google的高性能C++容器和算法库提升性能,相比STL会改进程序性能. |
json | JSON for Modern C++ | Json C++库,用来解析程序Json配置文件. |
magic_enum | Static reflection for enums (to string, from string, iteration) | 支持 enum 值和字符串的相互转换. |
libfort | Seleznev Anton libfort | C/C++ library 产生格式化的 ASCII tables. |
pegtl | PEGTL(Parsing Expression Grammar Template Library) | 使用PEGTL来方便的解析SPEF文件. |
pybind11 | pybind 11 | 方便python调用C++. |
VCDParser | ben-marshall verilog-vcd-parser | 解析功耗VCD波形文件. |
def lef | def lef parser | 解析物理设计DEF/LEF文件. |
ThreadPool | Jakob Progsch, Václav Zeman threadpool | C++11模板库实现的多线程池. |
fft | fft | 快速傅立叶变换库. |
hmetics | hmetics | 高效的图划分算法. |
我们深深地感谢来自开源社区的支持,我们也鼓励其他开源项目在木兰宽松许可证的范围下复用我们的代码。