AI-translated from English; not yet reviewed by a fluent editor.

# Cómo ejecutar el simulador de openTPU y evaluar sus requisitos de FPGA

> openTPU documenta un simulador de Python para inferencias de modelos lingüísticos y una ruta distinta para una tarjeta Inspur Kintex-7. Esta guía presenta los comandos, el resultado esperado y los requisitos de hardware del repositorio.

By BIG CHANGE Editorial

Published: 2026-10-07T13:36:01.795Z
Updated: 2026-10-07T13:36:01.795Z
Canonical: https://bigchange.ai/blog/opentpu-simulator-fpga-requirements-guide

![Conceptual charcoal illustration of one engineer holding and examining a PCIe FPGA accelerator card above an electronics work mat.](https://bigchange.ai/api/media/file/opentpu-fpga-card-hero-v2.png)
AI-generated conceptual illustration by BIG CHANGE, based on a reference photograph of the Inspur YPCB-00338 board. It does not depict a BIG CHANGE test or observed openTPU run.

El [repositorio openTPU](https://github.com/FeSens/openTPU/tree/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93) reúne en un solo proyecto un simulador Python de conjunto de instrucciones, un compilador, un diseño SystemVerilog y herramientas de host para FPGA. Sus autores afirman haber ejecutado modelos lingüísticos en una tarjeta Inspur Kintex-7. Para un desarrollador de sistemas de aprendizaje automático o FPGA, el primer paso accesible es una sesión de chat por software con pesos de un modelo real. Llevar el mismo proyecto a una tarjeta requiere una placa concreta, herramientas de compilación con licencia y una configuración Linux en el host. Esta guía sigue el repositorio en el commit `b9a3f3b` del 7 de octubre de 2026; BIG CHANGE no lo ha instalado, simulado ni probado.

## El gran cambio

- **Qué ha cambiado:** openTPU publica conjuntamente el conjunto de instrucciones del acelerador, el simulador, el compilador, el RTL y la integración con la placa. Un ingeniero puede inspeccionar el recorrido desde una operación del modelo hasta las instrucciones simuladas antes de adquirir la tarjeta compatible.
- **Por qué importa:** El simulador documentado ofrece a quienes aprenden hardware una forma concreta de estudiar el diseño y ejecutar un modelo lingüístico pequeño con software normal del host. El proyecto afirma que agentes de IA ayudaron a producir la pila de hardware; los artefactos inspeccionables permiten examinar esa afirmación, mientras que los resultados comunicados de la tarjeta siguen siendo mediciones del propio proyecto.
- **Qué conviene seguir:** Reproducir el resultado físico depende de una placa Kintex-7, una compilación de Vivado con licencia y una puesta en marcha de PCIe funcional. El repositorio incluye comandos y autopruebas para ese trabajo. Una ejecución independiente sobre una revisión fijada permitiría determinar con qué facilidad otros ingenieros pueden repetirlo.

## Fija la fuente y elige la ruta de software

Los pasos siguientes corresponden a `main` en [el commit `b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93`](https://github.com/FeSens/openTPU/commit/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93), fechado el 7 de octubre de 2026 a las 11:24 UTC. El repositorio tiene una etiqueta `v0.5`, pero esta guía usa el commit fijado posterior porque su README incorpora una nueva sección de [validación con Hugging Face](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/README.md#validating-against-hugging-face). El paquete de Python sigue identificándose como versión `0.1.0` en [`pyproject.toml`](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/pyproject.toml); ese número por sí solo no identifica la instantánea del código fuente. El repositorio utiliza la licencia Apache 2.0.

Necesitas Python 3.10 o posterior. El paquete declara `numpy` y `textual`; el README instala por separado `pytest`, `torch` y `transformers` para las pruebas y el uso del modelo. Muestra el comando `hf` de Hugging Face para descargar un checkpoint en `models/LFM2.5-230M`. Comprueba que `hf` esté disponible en tu entorno de Python antes de descargarlo. El checkpoint es una entrada para el comando de chat, no un modelo incluido en el código fuente. El proyecto no especifica el tamaño total de la descarga, la memoria necesaria en el host ni un tiempo fijo de simulación para esta ruta.

Desde la raíz del repositorio, la [secuencia documentada](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/README.md#try-it) es:

```shell
git clone https://github.com/FeSens/openTPU.git
cd openTPU
git checkout b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93
pip install -e .
pip install pytest torch transformers
python3 -m pytest -q
hf download LiquidAI/LFM2.5-230M --local-dir models/LFM2.5-230M
otpu-chat --model lfm2 --backend isa
```

Los comandos de checkout fijan la revisión examinada; los comandos de instalación, prueba, descarga y chat proceden del README. `--backend isa` selecciona el simulador Python del conjunto de instrucciones. La suite completa de `pytest` también incluye pruebas de RTL que requieren Verilator 5, por lo que una máquina sin esa herramienta no puede usar toda la suite como comprobación de éxito solo por software. En la ejecución interactiva documentada más pequeña, la señal de finalización es un checkpoint LFM2.5-230M cargado y una interfaz de chat que acepta una instrucción y devuelve texto del modelo. Las palabras exactas de la respuesta dependen de la instrucción y del muestreo. El [código fuente de la CLI de chat](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/opentpu/host/chat.py) también ofrece `--plain` para un REPL de terminal y `--prompt` para una respuesta de una sola ejecución; esta última opción imprime la respuesta y las estadísticas del turno. Son interfaces documentadas, no resultados observados por BIG CHANGE.

El README incluye Qwen3-0.6B, LFM2.5-230M y Qwen3.5-0.8B entre las principales opciones de chat, además de varios modelos mayores. Cada uno necesita su propio checkpoint en el directorio esperado o una ruta explícita. La ruta LFM2 anterior es el ejemplo de descarga de modelo más breve del repositorio. Los resultados más amplios del README abarcan diez modelos en la tarjeta, incluido Gemma 4 y modelos que necesitan descarga parcial de expertos, con varios formatos de pesos en algunos casos. Esa tabla recoge mediciones de los autores, no garantiza que todos los modelos sigan esta configuración de LFM2 con un solo comando.

## Qué comprueba el simulador

El proyecto describe un lenguaje de kernels y un compilador que generan instrucciones para su acelerador. El simulador ISA de Python ejecuta esas instrucciones; el RTL de SystemVerilog es la implementación de hardware. El [esquema del sistema en el README](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/README.md#how-it-works) y [`opentpu/isasim.py`](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/opentpu/isasim.py) permiten seguir esa separación. Ejecutar `otpu-chat` con `isa` prueba la inferencia del modelo mediante la ruta de instrucciones por software. No programa una FPGA ni mide el rendimiento de la tarjeta.

Los responsables informan que la tarjeta produce los mismos tokens que el simulador, bit a bit, y proporcionan un [script de validación](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/tools/validate.py) para comparar ejecuciones seleccionadas en el dispositivo con una referencia de Hugging Face en CPU. El README fijado describe instrucciones predeterminadas, comparaciones de tokens y logits, y una ejecución en la tarjeta el 7 de octubre. Los informes y el código permiten inspeccionar las comprobaciones. BIG CHANGE no las ha repetido, por lo que no demuestran exactitud ni velocidad de forma independiente.

## Qué cambia con la tarjeta física

El [manual de la placa](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/docs/board.md) se dirige a la **Inspur YPCB-00338** con una Xilinx Kintex-7 `xc7k480t-ffg1156-2`, dos canales DDR3 de 2 GiB y conexión PCIe a un PC host. La compilación predeterminada del bitstream utiliza Vivado 2026.1. El manual dice que la edición gratuita excluye este dispositivo y sugiere una licencia de pago o una evaluación de 30 días. La [tabla de dispositivos de AMD para 2026.1](https://docs.amd.com/r/en-US/ug973-vivado-release-notes-install-license/Device-Availability-by-Subscription-Tier?contentId=FXBYqlfi_pd_k5OTkJcJ1A) contradice esa afirmación: **Basic incluye todos los dispositivos Kintex 7**.

[Las opciones de licencia actuales de AMD](https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/vivado/vivado-licensing-options.html) indican que Basic cuesta 0 dólares, admite Linux y ofrece renovación anual gratuita. Las [preguntas frecuentes sobre licencias](https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/licensing-faq.html) dicen que Basic sigue necesitando un archivo de licencia anual válido; la evaluación independiente con todas las funciones dura **60 días**. La [tabla de funciones de AMD para 2026.1](https://docs.amd.com/r/en-US/ug973-vivado-release-notes-install-license/Supported-Devices-and-Features) incluye la programación JTAG en Basic, pero limita su simulación XSIM y algunas funciones de depuración. Los niveles de pago superiores añaden funciones, y AMD indica que las licencias de IP no cambian. BIG CHANGE no ha compilado openTPU con Basic. Antes de tratarlo como una compilación sin coste, hay que comprobar los derechos de uso de herramientas e IP para este flujo de bitstream. El manual estima entre 1,5 y 3 horas para `make bit`, según la máquina. Ni el manual ni la tabla de niveles de AMD indican el precio de compra de esta tarjeta ni el coste total de reproducción.

Tras obtener la placa y la cadena de herramientas, la ruta documentada consiste en compilar un bitstream en `boards/ypcb-00338`, programar la FPGA por JTAG y configurar el host Linux. El [`Makefile`](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/boards/ypcb-00338/Makefile) envía `make bit` la salida a `build/vivado/otpu.bit`. `make program` utiliza openFPGALoader de forma predeterminada; el manual también describe el administrador de hardware de Vivado. Una carga JTAG no persiste después de apagar y encender el equipo.

```shell
cd boards/ypcb-00338
make lint
make bit
make program
```

Los pasos de hardware anteriores proceden del manual de la placa; aquí no se probaron. En el host Linux, la lista de puesta en marcha pide instalar el paquete de Python y el checkpoint, ejecutar `sudo otpu-setup` para instalar el controlador XDMA y las reglas de dispositivo, volver a explorar PCIe tras cargar por JTAG y ejecutar `otpu-setup --check`. Según la documentación, este último comando termina correctamente con «todo en su sitio» cuando el controlador, la tarjeta, el enlace, los nodos de dispositivo y el registro ID están correctos. Después, `otpu-selftest` comprueba la tarjeta antes de ejecutar `otpu-chat --backend board --model lfm2`. Los diagnósticos de la placa se pueden guardar con `otpu-diag --json diag.json`. Esas comprobaciones son señales concretas de finalización para la ruta de la tarjeta; un chat ISA por sí solo no las sustituye.

Las cifras de rendimiento publicadas requieren la misma cautela. El README informa, por ejemplo, de **82,1 tokens por segundo de tiempo total** para LFM2.5-230M con pesos de 4 bits y una cabeza int8 en la tarjeta de los autores. El método usa 64 tokens de decodificación codiciosa después de una instrucción de 512 tokens, y la tabla distingue los ciclos del dispositivo del tiempo total que incluye el host. Otro host, bitstream, formato de pesos o instrucción produce otra medición. El mensaje del commit del 7 de octubre informa de más verificaciones en la tarjeta, pero sigue siendo un registro de los mantenedores. En las fuentes revisadas para esta guía no hay un benchmark reproducido de forma independiente.

## Fuentes y lecturas adicionales

- [Repositorio openTPU en el commit examinado](https://github.com/FeSens/openTPU/tree/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93), 7 de octubre de 2026. El README proporciona el esquema del sistema, comandos del simulador, lista de modelos y mediciones de la tarjeta declaradas por sus autores. Son afirmaciones del proyecto; BIG CHANGE no ejecutó el repositorio.
- [Metadatos del paquete de Python](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/pyproject.toml) y [licencia Apache 2.0](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/LICENSE). Establecen la versión de Python, dependencias declaradas, puntos de entrada de la CLI, versión del paquete y licencia del código fuente. Los checkpoints y Vivado tienen términos y requisitos aparte.
- [Manual de puesta en marcha de la placa y el host](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/docs/board.md), consultado el 7 de octubre de 2026. Especifica la tarjeta compatible, los pasos del bitstream, la configuración Linux, la programación JTAG y las autopruebas. Sus indicaciones sobre licencia de pago y evaluación de 30 días contradicen la documentación de licencias actual de AMD para 2026. Algunos ejemplos históricos de bitstream corresponden a compilaciones anteriores; para reproducirlo, usa el árbol fijado y las instrucciones de compilación vigentes.
- [Disponibilidad de dispositivos de AMD Vivado 2026.1, UG973](https://docs.amd.com/r/en-US/ug973-vivado-release-notes-install-license/Device-Availability-by-Subscription-Tier?contentId=FXBYqlfi_pd_k5OTkJcJ1A) y [dispositivos y funciones compatibles](https://docs.amd.com/r/en-US/ug973-vivado-release-notes-install-license/Supported-Devices-and-Features), ambos del 23 de junio de 2026, además de las [opciones de licencia](https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/vivado/vivado-licensing-options.html) consultadas el 7 de octubre. Incluyen todos los dispositivos Kintex 7 en Basic gratuito, enumeran compatibilidad con Linux y JTAG y muestran los límites de simulación y depuración de Basic. Las [preguntas frecuentes de AMD sobre licencias](https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/licensing-faq.html) especifican el archivo anual de Basic y la evaluación de 60 días. La compatibilidad del dispositivo por sí sola no verifica todo el flujo de bitstream de este proyecto bajo Basic.
- [CLI de chat](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/opentpu/host/chat.py) y [guía de LFM2](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/docs/lfm2.md). Muestran la selección del backend, la ruta del modelo, el comportamiento interactivo y de una sola ejecución, y el ejemplo de checkpoint pequeño.
- [Reportaje de GIGAZINE del 7 de octubre](https://gigazine.net/gsc_news/en/20261007-opentpu) aporta contexto útil sobre la atención pública del proyecto. Los detalles de configuración y rendimiento de esta guía se comprobaron en el repositorio, no se tomaron de ese reportaje.

## Sources

- [README de openTPU en el commit examinado](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/README.md) — Descripción principal, comandos del simulador, lista de modelos, mediciones y método comunicados para la tarjeta. Los resultados y la descripción del diseño asistido por IA son afirmaciones del proyecto.
- [Manual de la placa openTPU](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/docs/board.md) — Tarjeta Inspur compatible, dispositivo, DDR3, Vivado 2026.1, configuración de compilación/programación/host y comprobaciones. Su consejo de licencia solo de pago y evaluación de 30 días contradice los documentos de niveles de AMD 2026.1. Incluye imágenes históricas más antiguas.
- [Metadatos del paquete y código de chat de openTPU](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/pyproject.toml) — Versión mínima de Python, dependencias declaradas, versión del paquete, declaración de licencia y puntos de entrada de la CLI; el código de chat determina las opciones de backend y la interfaz de salida esperada.
- [Licencia Apache 2.0 de openTPU](https://github.com/FeSens/openTPU/blob/b9a3f3bc98e7f74808fd5650bf9db33eaf7b2c93/LICENSE) — Licencia del código fuente del proyecto; no implica los términos independientes del modelo ni de Vivado.
- [Disponibilidad de dispositivos de AMD Vivado 2026.1 por nivel de suscripción (UG973)](https://docs.amd.com/r/en-US/ug973-vivado-release-notes-install-license/Device-Availability-by-Subscription-Tier?contentId=FXBYqlfi_pd_k5OTkJcJ1A) — La tabla de dispositivos de AMD 2026.1 incluye explícitamente todos los dispositivos Kintex 7 en Basic; esa cobertura no verifica por sí sola todo el flujo de bitstream e IP de openTPU.
- [Dispositivos y funciones compatibles con AMD Vivado 2026.1 (UG973)](https://docs.amd.com/r/en-US/ug973-vivado-release-notes-install-license/Supported-Devices-and-Features) — Exige un archivo de licencia válido al iniciar; Basic incluye programación JTAG y limita la simulación XSIM y algunas funciones de depuración. No verifica una compilación de openTPU con Basic.
- [Opciones de licencia de AMD Vivado](https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/vivado/vivado-licensing-options.html) — Basic cuesta actualmente 0 dólares, tiene renovación anual gratuita y compatibilidad con Linux; las funciones varían por nivel y las licencias de IP no cambian. 2026.1 inicia este modelo de niveles.
- [Preguntas frecuentes de AMD sobre licencias](https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/licensing-faq.html) — Basic 2026.1 y posteriores requiere un archivo de licencia anual válido que se puede obtener gratis; la evaluación independiente con todas las funciones dura 60 días.
- [GIGAZINE: reportaje sobre openTPU](https://gigazine.net/gsc_news/en/20261007-opentpu) — Solo aporta contexto secundario. Los datos de configuración y rendimiento se comprobaron en las fuentes primarias del repositorio.
