SiliconCompiler workflow

文章目录

  • [它和你现在做的 CI/CD 有什么关系?](#它和你现在做的 CI/CD 有什么关系?)
  • [-1 这个项目的目录](#-1 这个项目的目录)
    • [2 .github/workflows/(GitHub Actions CI/CD 配置)](#2 .github/workflows/(GitHub Actions CI/CD 配置))
      • [3 它有哪些 workflow?](#3 它有哪些 workflow?)
        • [4 daily_ci.yml 重点是什么?](#4 daily_ci.yml 重点是什么?)
        • [5 python_ci.yml 又是什么?](#5 python_ci.yml 又是什么?)
  • [-2 SiliconCompiler CI/CD 分层设计](#-2 SiliconCompiler CI/CD 分层设计)
  • [-3 SiliconCompiler CI 分为两类:](#-3 SiliconCompiler CI 分为两类:)
    • [1. 快速 CI(每次提交)](#1. 快速 CI(每次提交))
    • [2. 慢速 CI(定时)](#2. 慢速 CI(定时))

SiliconCompiler 是一个开源的模块化硬件构建系统。
SiliconCompiler = 用 Python 统一调度各种 EDA 工具,把芯片/硬件设计流程自动化的开源框架。

它和你现在做的 CI/CD 有什么关系?

我现在做的Gitee Go Demo是:

复制代码
提交代码 → 运行 Python 脚本 → 上传制品 → 发布

SiliconCompiler 做的是更复杂的:

复制代码
提交硬件/EDA代码
→ 安装依赖
→ 多系统、多 Python 版本测试
→ 调用 EDA/仿真工具
→ 跑测试集
→ 跑设计案例
→ 保存日志、覆盖率、artifact

-1 这个项目的目录

复制代码
siliconcompiler/      项目核心源码
tests/                自动化测试代码
examples/             示例设计/示例项目
docs/                 文档
.github/workflows/    GitHub Actions CI/CD 配置
pyproject.toml        Python 项目配置

2 .github/workflows/(GitHub Actions CI/CD 配置)

3 它有哪些 workflow?



SiliconCompiler 不是只有一条 CI,而是把不同目的拆成多条 workflow:快速测试、每日测试、工具测试、镜像构建、代码检查、发布构建。

4 daily_ci.yml 重点是什么?

这个 daily_ci.yml 名字叫 Daily CI Tests。它有三种触发方式:手动触发、被其他 workflow 调用、定时触发;定时规则是每天运行一次。

它的结构如下:

复制代码
Daily CI Tests
├── docker_image
│   └── 准备工具容器
├── cache
│   └── 安装依赖、生成缓存、上传 artifact
├── daily_tests_job
│   └── 多 Python 版本运行完整测试
└── gallery
    └── 跑设计样例/benchmark

优点:

5 python_ci.yml 又是什么?

python_ci.yml 更像普通项目里的基础 CI。它在 push 到 main 或 test/** 分支、Pull Request、手动触发时运行。它会在多个 Python 版本和多个操作系统上测试,包括 Ubuntu、Windows、macOS,并运行 pytest。

复制代码
python_ci.yml = 快速基础验证
daily_ci.yml = 每日完整验证

-2 SiliconCompiler CI/CD 分层设计

SiliconCompiler 的 CI 不是一条流水线,而是:

复制代码
CI/CD 体系(多层)
├── 快速 CI(python_ci.yml)
├── 每日 CI(daily_ci.yml)
├── 工具链 CI(tools_ci.yml)
├── 环境构建(docker_image.yml)
├── 代码规范(lint.yml)
└── 发布 CI(wheels.yml)

不同目的 → 不同 workflow

为什么要分这么多 CI?

我现在的 Demo 是:

复制代码
一条流水线 → 做所有事

每一层是干什么的?

python_ci.yml(快速 CI)

复制代码
每次提交 / PR → 快速验证

daily_ci.yml(每日 CI)

复制代码
每天跑一次"完整验证"


不是每次提交都跑

docker_image.yml(环境构建)

复制代码
构建运行环境(工具链)

很重要因为:EDA / 算法 → 依赖复杂环境

tools_ci.yml(工具验证)

复制代码
验证工具是否正常

lint.yml(代码规范)

复制代码
检查代码风格

wheels.yml(发布)

复制代码
打包 + 发布 Python 包

-3 SiliconCompiler CI 分为两类:

1. 快速 CI(每次提交)

复制代码
python_ci.yml

快速反馈

2. 慢速 CI(定时)

复制代码
daily_ci.yml

深度验证

相关推荐
毕竟是shy哥2 小时前
计算YOLO数据集中每个类的目标数
算法·yolo·机器学习
M78佐菲2 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
晊晌_h4 小时前
嵌入式从0到精通——数据结构总结[特殊字符]
数据结构·算法·排序算法
我找到地球的支点啦4 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
罗西的思考4 小时前
【OpenClaw具身硬件】ZeroClaw 源码阅读笔记(3)--- RAG
人工智能·算法·机器学习
浪里镖客5 小时前
位姿转换矩阵写法-个人习惯(计算机理解其实是相反的)
线性代数·算法·矩阵
小白羊丨8 小时前
如何诊断 Prompt 模板导致的效果下降?
人工智能·算法·prompt
OPEN-F9 小时前
C++11/14新特性精讲:移动语义与智能指针实战
开发语言·c++·算法
lisin-lee-cooper10 小时前
【leetcode658】有序数组找出k个最接近x的数
java·数据结构·算法
sunburn-10 小时前
Java堆(Heap)详解与实战教学
java·开发语言·数据结构·ide·算法