v0.1.0 · Lanzado

EulerNPU

La herramienta que facilita poner un NPU en FPGA — el mercado FPGA es el objetivo prioritario; ASIC es un objetivo a largo plazo

Define el NPU en YAML y hazlo funcionar en un FPGA real. Una pila NPU inference-first que con una sola hoja de spec valida, sintetiza y pone en marcha un NPU pequeño sobre FPGAs de la familia Zynq.

3 NPUs verificados en silicio sobre FPGA real. Con el mismo compilador, keyword spotting, diagnóstico industrial de fallos y un LLM pequeño (FFN-on-NPU) se han demostrado en silicio sobre una placa real (QMTECH XC7Z020, familia Zynq-7000) — no es simulación.

spec → compile → bitstream → FPGA real, desde una sola CLI. 145 operadores (18 grupos), cuantización INT4/INT8, 6 targets de placa y 15 subcomandos CLI públicos cubren todo el ciclo en el mismo flujo.

145
Operadores (18 grupos)
6
Targets de placa
3
NPUs verificados en silicio
15
Subcomandos CLI

El mercado FPGA es el objetivo prioritario. Tres NPUs ya funcionan en silicio de la familia Zynq — detección de palabras clave, diagnóstico de fallos industriales, inferencia de LLM pequeño. El mercado FPGA por sí solo ya es grande y es donde estas cargas de trabajo entregan rendimiento medido en aplicaciones industriales y de edge. La misma salida del compilador también puede extenderse a objetivos ASIC como paso a largo plazo.

Open Source · Silicon-Verified

3 NPUs corriendo en un FPGA real

Mismo compilador, misma placa (QMTECH XC7Z020, Zynq-7000): 3 NPUs distintos sintetizados y medidos en silicio

KWS (Keyword Spotting)

DS-CNN + GRU de 16 capas + FC cuantizado en INT8. IP NPU de grafo completo (kws_npu_top) sintetizado a 90 MHz @ DSP 45% / BRAM 24%.

Precision11/11 (coincidencia 100% CPU ↔ NPU)
Aceleracion8.07× vs CPU (3.17 ms/inferencia)
Streaming200 frames en 5.166 s · 38.7 inf/s

Arranque xsdb de 6 etapas + UART: precisión 11/11 · aceleración 8.07× · confianza por palabra clave.

Diagnostico de fallos en rodamientos CWRU

FFT de vibracion → 3×Conv1D + MaxPool + GAP + 2×FC en INT8. IP bearing_npu_top a 90 MHz @ DSP 86% / BRAM 12%.

Precision40/40 (coincidencia 100% CPU ↔ NPU)
Aceleracion11.13× vs CPU (≈4 ms/inferencia, 252 inf/s)
Monitor en tiempo real200 ventanas · recall 100% · falsas alarmas 0%

Demo 1 — Validación de precisión. Tabla de clasificación de 40 muestras de test (ciclos CPU/NPU por clase, aceleración 11.13×).

Demo 2 — Monitor en tiempo real. Stream de 200 ventanas (clase de fallo · confianza, recall 100% · 0 falsas alarmas).

nanoGPT LLM (FFN-on-NPU)

nanoGPT 10.77M (D=384 · 6 capas, TinyShakespeare). Solo el FFN (fc1 → gelu → fc2) se descarga al NPU; el resto corre en ARM — configuracion hibrida L2 con un LLM corriendo en la XC7Z020.

VerificacionCoincidencia bit a bit 5/5 entre CPU y NPU
RecursosDSP 9% · BRAM 2% · LUT 17% (solo FFN)
SignificadoDemuestra que es viable particionar la inferencia de un LLM en una placa Zynq-7000

Demo 1 — Identidad bit a bit. 5 prompts × 16 chars — verificación de coincidencia bit a bit 5/5 CPU↔NPU.

Demo 2 — Stream en vivo. Generación de 50 chars del prompt ROMEO — inferencia en vivo híbrida FFN-on-NPU.

※ Los tres proyectos son resultados sobre silicio real (no simulacion), sintetizados tal cual los emite el compilador de EulerNPU. Placa: QMTECH XC7Z020 CLG484-1 (Zynq-7000), reloj de PL 90–100 MHz, PS ARM Cortex-A9. El mercado FPGA es en sí mismo el objetivo prioritario, y el mismo flujo del compilador se extiende a objetivos ASIC como paso a largo plazo.

Demos de ejemplo adicionales (nivel Spec/Sim)

Sobre los 3 verificados en silicio, 4 dominios de ejemplo en experimentación con el mismo compilador

Los siguientes ejemplos aún no han sido validados en silicio FPGA — están en etapa de software, ejecutados a través del mismo flujo spec.yaml → npu_sim para verificar la cobertura funcional. Los resultados en silicio se limitan a los 3 anteriores (KWS · Bearing · nanoGPT).

Inspección Edge VLM (Vision-Language Model)

Lectura en tiempo real de frames de cámaras edge con un VLM pequeño — detección/clasificación de anomalías y generación de texto de resumen. Grafo de spec con Vision Encoder + Cross Attention + head LLM.

Embodied AI SoC (SoC de IA embebida)

Perfil de SoC para inferencia de percepción y política de baja latencia en humanoides y brazos robóticos. Combinación de Vision Encoder + Multimodal + head de política, con compresión de caché KV incluida.

ADAS Perception (percepción para conducción autónoma)

Stack de percepción vehicular — ejemplo de spec que utiliza BEV Projection multi-cámara + PointCloud + Trajectory Predict del grupo de operadores Autonomy.

EulerDrive AX1 (perfil de inferencia vehicular)

Perfil de inferencia on-device alineado con el dominio automotriz de EulerAtlas — simulación de red de política con el perfil de placa ax1_sim.

* Los 4 ejemplos anteriores son demos de referencia para verificar la cobertura del compilador y del simulador. La verificación real en silicio se limita a los 3 anteriores (KWS · Bearing · nanoGPT).

Hoja de ruta del producto

FPGA como mercado objetivo prioritario. El mismo flujo del compilador se extiende a ASIC como paso a largo plazo.

Completado · Público
Validación en silicio FPGA
KWS · Detección de fallos · LLM
Medido en Zynq-7000
Objetivo a largo plazo · ASIC
Sovereign NPU
Mismo compilador, nuevo destino
Chip de inferencia AI soberano

Por qué FPGA como objetivo prioritario. El mercado FPGA en sí ya es sustancial — la latencia determinista, el bajo consumo y la reconfiguración en campo lo convierten en el punto ideal para automatización industrial, IA en el edge y sistemas de seguridad crítica donde importa el rendimiento medido real. EulerNPU cubre este mercado con una sola cadena de herramientas CLI. El mismo flujo del compilador puede extenderse a objetivos ASIC como paso a largo plazo, sobre la base ya verificada en silicio FPGA.

145 Operadores & 10 Tipos de Datos

145 operadores, 10 DType, desde spec.yaml hasta la inferencia en FPGA

145 operadores (18 grupos, A–R)

Sistematización en 18 grupos de todas las operaciones necesarias para la inferencia NPU. Cobertura de arquitecturas recientes — attention eficiente (FlashAttention · GQA), vision encoder, MoE/Sparse, Diffusion, Speculative Decoding.

▶ Ver los 18 grupos completos
Core MathMatMul, Add, Mul, Div, Sqrt y otras operaciones matematicas basicas
ActivationReLU, GELU, SiLU, Sigmoid, Softmax, etc.
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

Sistema de 10 DType

Se clasifican en 3 niveles segun los requisitos de precision y rendimiento.

Tier 0 (obligatorio) fp32, int32 — soportados en todos los operadores
Tier 1 (recomendado) fp16, bf16, int8, uint8 — soportados en la mayoria de operadores
Tier 2 (extendido) int16, int4, fp8_e4m3, fp8_e5m2 — operadores especificos

Backends de ejecucion (4)

cpu_ref Referencia NumPy del host (ejecucion inmediata sin dependencias)
npu_sim Simulacion funcional + traza de ejecucion + estimacion de ciclos/MAC/latencia por operador
zynq_ps Ejecucion en el ARM PS de Zynq
zynq_pl_stub Analisis/emulacion del offload a la PL del FPGA

Perfiles de placa FPGA (6 placas)

Zynq-7000 XC7Z020 (verificado en silicio, AXI-Lite MMIO)
Zynq UltraScale+ ZU3EG · ZU7EV · ZU9EG (target INT4 / alto rendimiento)
Kria SOM XCK26 / KV260 (kit de desarrollo para IA en el borde)
ax1_sim Perfil de inferencia on-device para automoción (simulación)

Pipeline de Compilacion

Desde la especificacion YAML hasta el archivo .npuart desplegable

spec.yaml → IR → .npuart

El archivo de especificacion YAML declarativo se valida, transforma a IR y optimiza antes de compilarse al formato .npuart (NPU Archive).

Entrada spec.yaml — definicion declarativa del grafo computacional
Validacion Compatibilidad de operadores, tipos de datos, inferencia de formas
IR Representacion intermedia — optimizacion de grafos, fusion de operadores
Salida Binario .npuart — cargable directamente en el runtime

Runtime

Los archivos .npuart compilados se pueden ejecutar en el simulador o en hardware FPGA Zynq-7020.

Simulador Simulacion con precision de ciclo, soporte de analisis de rendimiento
FPGA Runtime Zynq-7020 AXI-Lite MMIO
Perfilado Latencia por capa, ancho de banda de memoria, reporte de utilizacion

Referencia CLI

Unico punto de entrada eulernpu — 15 subcomandos cubren todo el flujo de trabajo (con soporte --lang ko|en|zh|ja|es)

Comando Descripcion
eulernpu infoMuestra la plataforma, los operadores soportados y la informacion de dtype
eulernpu validateValida el grafo de operadores de spec.yaml (JSON-Schema + 23 reglas semanticas)
eulernpu migrate-spec NEWMigracion automatica de specs 0.4 → 0.5
eulernpu compileCompila spec.yaml a un artefacto .npuart
eulernpu runEjecuta el artefacto .npuart en los backends cpu_ref/npu_sim/zynq
eulernpu simSimulacion funcional + estimacion de ciclos/MAC/latencia
eulernpu generate NEWGeneracion autorregresiva de tokens (KV cache)
eulernpu quantize NEWCuantizacion de pesos INT8/INT4 (--weight-bits 4)
eulernpu profilePerfilado del tiempo de ejecucion y uso de memoria por operador
eulernpu explainOffload a PL + plan de memoria, visualizacion del schedule del grafo
eulernpu board smokeVerifica la conexion de la placa FPGA y el funcionamiento basico
eulernpu calibrateRecoleccion y aplicacion de datos de calibracion para cuantizacion
eulernpu benchmarkEjecuta benchmarks de latencia/throughput
eulernpu replayReproduce una traza de ejecucion guardada
eulernpu compress-cacheAplica y valida la configuracion de compresion de KV cache

Principios de Diseno

Filosofia central de diseno de EulerNPU

Declarativo Primero

Archivos de especificacion YAML definen el grafo computacional — sin necesidad de codigo de bajo nivel, el compilador maneja todas las optimizaciones.

Validacion Pre-Compilacion

La matriz de capacidades verifica tipos de datos y restricciones de hardware de cada operador antes de compilar, previniendo errores en tiempo de ejecucion.

Simulacion Primero

Verifique la correctitud y el rendimiento con el simulador de precision de ciclo antes de desplegar en FPGA.

Tutoriales

Aprenda EulerNPU rapidamente con guias paso a paso

Tutoriales proximamente.

Instalacion y Primeros Pasos

Instale EulerNPU y compile su primer modelo

Instalacion

pip install -e ".[dev]"

# Validar y compilar
eulernpu validate spec.yaml
eulernpu compile spec.yaml -o model.npuart

Requisitos

Python 3.10+, NumPy

Opcional: importacion ONNX, placas Zynq-7000 / UltraScale+ (target FPGA)

Comience el desarrollo de inferencia NPU con EulerNPU

Desde especificacion YAML hasta despliegue FPGA, con una sola CLI.

Comenzar en GitHub Contactenos