FPGA に NPU を手軽に載せるツール — 次のステップは ASIC
YAML で NPU を定義し、実機の FPGA で動作。 スペック一枚で小さな NPU を検証・合成し、Zynq-7000 上で動作させる推論ファースト(inference-first)な NPU フルスタックです。
実機 FPGA(Zynq-7000)で検証された NPU 3 種類。 同じコンパイラで、キーワードスポッティング・産業向け故障診断・小型 LLM(FFN-on-NPU)が QMTECH XC7Z020 ボード上で silicon として実証されました — シミュレーションではありません。
spec → compile → bitstream → 実機 FPGA、単一 CLI で。 138 個のオペレータ(17 グループ)、INT4/INT8 量子化、4 個のバックエンド(cpu_ref・npu_sim・zynq_ps・zynq_pl_stub)、15 個の CLI サブコマンドで、全サイクルを同じ流れで。
同じコンパイラ・同じボード(QMTECH XC7Z020、Zynq-7000)—— 異なる 3 つの NPU を合成し実機検証
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× 高速化・キーワードごとの信頼度を出力。
振動 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 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 プロンプト × 16 文字生成 — CPU↔NPU テキスト 5/5 一致検証。
Demo 2 — ライブストリーム。50 文字 ROMEO プロンプト生成 — FFN-on-NPU ハイブリッドのライブ推論。
※ 3 プロジェクトはすべて同一の EulerNPU コンパイラ出力をそのまま合成した実シリコン結果です(シミュレーションではありません)。ボード: QMTECH XC7Z020 CLG484-1(Zynq-7000)、PL クロック 90–100 MHz、ARM Cortex-A9 PS。同じ流れで次のステップは ASIC 合成です。
FPGA で実証した後、同じ流れで ASIC へ
138 個のオペレータ、10 種の DType、spec.yaml から FPGA 推論まで
NPU 推論に必要な全演算を 17 グループに体系化。効率アテンション(FlashAttention・GQA)、ビジョンエンコーダ、MoE/Sparse、Diffusion、Speculative Decoding など最新アーキテクチャのカバレッジを含みます。
| Core Math | MatMul, Add, Mul, Div, Sqrt など基本数学演算 |
|---|---|
| Activation | ReLU, GELU, SiLU, Sigmoid, Softmax など |
| Normalization | LayerNorm, RMSNorm, BatchNorm, GroupNorm |
| Conv/Vision | Conv2D, DepthwiseConv, Pool, Resize, Patch |
| Sequence/Attention | ScaledDotProduct, MultiHeadAttention, RoPE, ALiBi |
| Efficient Attention NEW | FlashAttention, SlidingWindowAttention, MultiQueryAttention(GQA) |
| MoE/Sparse | TopKRouter, ExpertDispatch, LoadBalanceLoss |
| Recurrent | LSTM, GRU, SRU |
| Graph | Concat, Split, Reshape, Transpose, Gather, Scatter |
| Multimodal | CrossAttention, VisionProjection, AudioMel |
| Vision Encoder NEW | PatchEmbed, ClsTokenPrepend, ImageNorm |
| Diffusion NEW | TimestepEmbed, NoiseSample, DDIMStep, CFGScale, FlowMatchStep |
| Speculative Decoding NEW | TokenAcceptance, DraftVerify, PrefixCacheLookup/Store |
| Quantization | Quantize, Dequantize, FakeQuantize, PackInt4/UnpackInt4 |
| Mamba/SSM | SelectiveScan, Discretize, SSMConv |
| Cache Compress | KVCacheCompress, SlidingWindow, H2O |
| Autonomy | PointCloud, BEVProject, TrajectoryPredict |
精度と性能の要求に応じて 3 段階のティアに分類されます。
| Tier 0 (必須) | fp32, int32 — すべてのオペレータで対応 |
|---|---|
| Tier 1 (推奨) | fp16, bf16, int8, uint8 — ほとんどのオペレータで対応 |
| Tier 2 (拡張) | int16, int4, fp8_e4m3, fp8_e5m2 — 特定のオペレータ |
| cpu_ref | ホスト NumPy リファレンス(依存なしで即実行) |
|---|---|
| npu_sim | 機能シミュレーション + 実行トレース + オペレータ別サイクル/MAC/遅延推定 |
| zynq_ps | Zynq ARM PS 実行 |
| zynq_pl_stub | FPGA PL オフロード解析/エミュレーション |
| Zynq-7000 | XC7Z020, AXI-Lite MMIO トランスポート |
|---|---|
| Zynq UltraScale+ | ZU3EG, ZU9EG (INT4 / 高性能ターゲット) |
spec.yaml から FPGA 推論までの 4 段階パイプライン
| ステップ1 | spec.yaml を作成し eulernpu validate で検証 |
|---|---|
| ステップ2 | eulernpu compile で .npuart アーティファクトを生成 |
| ステップ3 | eulernpu sim でホスト上のサイクル精度シミュレーション |
| ステップ4 | eulernpu board smoke で FPGA ボード接続を確認後 eulernpu run で実行 |
| calibrate | 量子化キャリブレーションデータ収集 |
|---|---|
| compress-cache | KV キャッシュ圧縮設定の適用 |
| benchmark | レイテンシ/スループットベンチマーク |
単一エントリポイント eulernpu — 15 個のサブコマンドで全ワークフローを実行します(--lang ko|en|zh|ja|es 対応)
| コマンド | 説明 |
|---|---|
eulernpu info | プラットフォーム、対応オペレータ、dtype 情報を表示 |
eulernpu validate | spec.yaml オペレータグラフを検証 (JSON-Schema + 23 個のセマンティック規則) |
eulernpu migrate-spec NEW | 0.4 → 0.5 スペックの自動マイグレーション |
eulernpu compile | spec.yaml を .npuart アーティファクトにコンパイル |
eulernpu run | .npuart アーティファクトを cpu_ref/npu_sim/zynq バックエンドで実行 |
eulernpu sim | 機能シミュレーション + サイクル/MAC/レイテンシ推定 |
eulernpu generate NEW | 自己回帰トークン生成 (KV キャッシュ) |
eulernpu quantize NEW | INT8/INT4 重み量子化 (--weight-bits 4) |
eulernpu profile | オペレータ別実行時間、メモリ使用量のプロファイリング |
eulernpu explain | PL オフロード + メモリプラン、グラフスケジュールの可視化 |
eulernpu board smoke | FPGA ボード接続および基本動作の確認 |
eulernpu calibrate | 量子化キャリブレーションデータの収集および適用 |
eulernpu benchmark | レイテンシ/スループットベンチマークの実行 |
eulernpu replay | 保存された実行トレースを再生 |
eulernpu compress-cache | KV キャッシュ圧縮設定の適用および検証 |
EulerNPUが従うコア設計理念
YAMLスペックファイルで計算グラフを定義——低レベルコードの記述不要、コンパイラがすべての最適化を処理します。
ケイパビリティマトリクスがコンパイル前に各オペレータのデータ型とハードウェア制約をチェックし、ランタイムエラーを防止します。
FPGAにデプロイする前に、サイクル精度シミュレータで正確性とパフォーマンスを検証します。
ステップバイステップのガイドでEulerNPUをマスター
チュートリアルは近日公開予定です。
EulerNPUをインストールして最初のモデルをコンパイル
Python 3.10+, NumPy
オプション: ONNX インポート、Zynq-7000 / UltraScale+ ボード(FPGA ターゲット)