EulerNPU

把 NPU 轻松搬上 FPGA 的工具 —— 下一步是 ASIC

用 YAML 定义 NPU,在真实 FPGA 上运行。一张规格就能完成小型 NPU 的校验、综合并让它跑在 Zynq-7000 上的推理优先(inference-first)NPU 全栈。

真实 FPGA(Zynq-7000)验证的 3 款 NPU。同一个编译器,在 QMTECH XC7Z020 开发板上以真实硅片实证了关键词识别 · 工业故障诊断 · 小型 LLM(FFN-on-NPU)—— 不是仿真。

spec → compile → bitstream → 真实 FPGA,单一 CLI 完成。138 个算子(17 组)、INT4/INT8 量化、4 个后端(cpu_ref · npu_sim · zynq_ps · zynq_pl_stub)、15 个 CLI 子命令,整个周期走的是同一条流水线。

3 款
FPGA 验证 NPU
138
算子 (17 组)
4
后端
15
CLI 子命令

FPGA 验证是 ASIC 的前置阶段。在 Zynq-7000 上,三款 NPU 已经在真实硅片上运行 —— 关键词识别、工业故障诊断、小型 LLM 推理。下一步就是用同一个 EulerNPU 编译器输出做 ASIC 合成。

Open Source · FPGA-Verified

真实运行在 FPGA 上的三款 NPU

同一编译器 · 同一开发板(QMTECH XC7Z020,Zynq-7000)—— 综合并实测验证三款不同的 NPU

KWS(关键词识别)

DS-CNN + 16 层 GRU + FC 以 INT8 量化。全图 NPU IP(kws_npu_top)合成,90 MHz @ DSP 45% / BRAM 24%。

精度11/11(CPU↔NPU 100% 一致)
加速CPU 比 8.07×(3.17 ms/推理)
流式200 帧 5.166 s · 38.7 inf/s

xsdb 6 阶段启动 + UART 输出 11/11 精度 · 8.07× 加速 · 每个关键词的置信度。

CWRU 轴承故障诊断

振动 FFT → 3×Conv1D + MaxPool + GAP + 2×FC INT8。bearing_npu_top IP,90 MHz @ DSP 86% / BRAM 12%。

精度40/40(CPU↔NPU 100% 一致)
加速CPU 比 11.13×(≈4 ms/推理,252 inf/s)
实时监控200 窗口 · 召回率 100% · 误报 0%

Demo 1 —— 精度验证。40 个测试样本分类表(每类 CPU/NPU 周期、11.13× 加速)。

Demo 2 —— 实时监控。200 窗口流式(故障类、置信度,召回率 100% · 误报 0%)。

nanoGPT LLM(FFN-on-NPU)

nanoGPT 10.77M(D=384 · 6 层、TinyShakespeare)。仅 FFN(fc1 → gelu → fc2)卸载至 NPU,其余在 ARM —— XC7Z020 上让 LLM 跑起来的混合 L2 构型。

验证CPU↔NPU 文本 5/5 比特一致
资源DSP 9% · BRAM 2% · LUT 17%(FFN 专用)
意义在 Zynq-7000 上实证 LLM 推理分割的可能性

Demo 1 —— 比特一致。5 个 prompt × 16 字符生成 —— CPU↔NPU 文本 5/5 一致验证。

Demo 2 —— 实时流。50 字符 ROMEO prompt 生成 —— FFN-on-NPU 混合实时推理。

※ 三个项目全部为同一 EulerNPU 编译器输出直接合成的真实硅片结果(非仿真)。开发板:QMTECH XC7Z020 CLG484-1(Zynq-7000),PL 时钟 90–100 MHz,ARM Cortex-A9 PS。同一流程下一步即 ASIC 合成。

已验证的路径

在 FPGA 上证明后,用同一个流程走到 ASIC

完成 · 公开
FPGA 验证
KWS · 故障诊断 · LLM
Zynq-7000 实测
长期目标
Sovereign NPU
AI 推理芯片自主化
边缘 · 端侧

为什么从 FPGA 开始。在 ASIC tape-out 前用同一个编译器 · 同一个 spec 验证真实运行,是降低成本与风险最合理的路径。EulerNPU 用一个 CLI 工具链支持整个流程。

核心功能

138 个算子、10 种 DType,从 spec.yaml 一路到 FPGA 推理

138 个算子 (17 组, A–Q)

NPU 推理所需的全部算子,体系化为 17 组。覆盖高效注意力(FlashAttention · GQA)、视觉编码器、MoE/Sparse、Diffusion、Speculative Decoding 等最新架构。

▶ 查看全部 17 组
Core MathMatMul, Add, Mul, Div, Sqrt 等基础数学运算
ActivationReLU, GELU, SiLU, Sigmoid, Softmax 等
NormalizationLayerNorm, RMSNorm, BatchNorm, GroupNorm
Conv/VisionConv2D, DepthwiseConv, Pool, Resize, Patch
Sequence/AttentionScaledDotProduct, MultiHeadAttention, RoPE, ALiBi
Efficient Attention NEWFlashAttention, SlidingWindowAttention, MultiQueryAttention(GQA)
MoE/SparseTopKRouter, ExpertDispatch, LoadBalanceLoss
RecurrentLSTM, GRU, SRU
GraphConcat, Split, Reshape, Transpose, Gather, Scatter
MultimodalCrossAttention, VisionProjection, AudioMel
Vision Encoder NEWPatchEmbed, ClsTokenPrepend, ImageNorm
Diffusion NEWTimestepEmbed, NoiseSample, DDIMStep, CFGScale, FlowMatchStep
Speculative Decoding NEWTokenAcceptance, DraftVerify, PrefixCacheLookup/Store
QuantizationQuantize, Dequantize, FakeQuantize, PackInt4/UnpackInt4
Mamba/SSMSelectiveScan, Discretize, SSMConv
Cache CompressKVCacheCompress, SlidingWindow, H2O
AutonomyPointCloud, BEVProject, TrajectoryPredict

10 种 DType 系统

按精度与性能需求分为 3 个层级。

Tier 0 (必需) fp32, int32 —— 所有算子均支持
Tier 1 (推荐) fp16, bf16, int8, uint8 —— 大多数算子支持
Tier 2 (扩展) int16, int4, fp8_e4m3, fp8_e5m2 —— 特定算子

执行后端 (4 种)

cpu_ref 主机 NumPy 参考实现(无依赖即可立即运行)
npu_sim 功能仿真 + 执行 trace + 逐算子周期/MAC/延迟估计
zynq_ps Zynq ARM PS 执行
zynq_pl_stub FPGA PL 卸载分析 / 仿真

FPGA 开发板配置

Zynq-7000 XC7Z020, AXI-Lite MMIO 传输
Zynq UltraScale+ ZU3EG, ZU9EG (INT4 / 高性能目标)

编译管线

从YAML规格到可部署的.npuart文件

spec.yaml → IR → .npuart

声明式YAML规格文件经过验证、IR转换和优化后,编译为.npuart(NPU Archive)格式。

输入 spec.yaml — 声明式计算图定义
验证 算子兼容性、数据类型、形状推断检查
IR 中间表示——图优化、算子融合
输出 .npuart 二进制——可直接在运行时加载

运行时

编译后的.npuart文件可在模拟器或Zynq-7020 FPGA硬件上运行。

模拟器 周期精确模拟,支持性能分析
FPGA Zynq-7020 AXI-Lite MMIO运行时
性能分析 逐层延迟、内存带宽、利用率报告

CLI 参考

单一入口点 eulernpu —— 15 个子命令覆盖完整工作流(支持 --lang ko|en|zh|ja|es

命令 说明
eulernpu info显示平台、支持算子与 dtype 信息
eulernpu validate校验 spec.yaml 算子图(JSON-Schema + 23 条语义规则)
eulernpu migrate-spec NEW0.4 → 0.5 规格自动迁移
eulernpu compile将 spec.yaml 编译为 .npuart 工件
eulernpu run在 cpu_ref/npu_sim/zynq 后端运行 .npuart 工件
eulernpu sim功能仿真 + 周期/MAC/延迟估计
eulernpu generate NEW自回归 token 生成(KV 缓存)
eulernpu quantize NEWINT8/INT4 权重量化(--weight-bits 4
eulernpu profile逐算子执行时间、内存占用分析
eulernpu explainPL 卸载 + 内存规划,图调度可视化
eulernpu board smoke确认 FPGA 开发板连接与基本运行
eulernpu calibrate量化校准数据采集与应用
eulernpu benchmark运行延迟/吞吐量基准测试
eulernpu replay回放已保存的执行 trace
eulernpu compress-cache应用并校验 KV 缓存压缩配置

设计原则

EulerNPU遵循的核心设计理念

声明式优先

YAML规格文件定义计算图——无需编写底层代码,编译器处理所有优化。

编译前验证

能力矩阵在编译前检查每个算子的数据类型和硬件约束,避免运行时错误。

模拟先行

在部署到FPGA之前,通过周期精确模拟器验证正确性和性能。

教程

通过分步指南快速掌握EulerNPU

教程即将公开。

安装与入门

安装EulerNPU并编译您的第一个模型

安装

pip install -e ".[dev]"

# 验证并编译
eulernpu validate spec.yaml
eulernpu compile spec.yaml -o model.npuart

系统要求

Python 3.10+, NumPy

可选:ONNX 导入、Zynq-7000 / UltraScale+ 开发板(FPGA 目标)

使用EulerNPU开始NPU推理开发

从YAML规格到FPGA部署,单一CLI。

在GitHub上开始 联系我们