Communitygithub.com

pynq-cv-accelerator

Conecta tensores de imágenes o numéricos a operadores HLS/RTL en PYNQ, estableciendo contratos de entrada/salida, gestionando buffers continuos y caché, comparando con referencias de oro y localizando latencias de pipeline.

¿Qué es pynq-cv-accelerator?

Esta habilidad está diseñada para desarrolladores que trabajan con la plataforma PYNQ (Python + Zynq) y necesitan desplegar o migrar operadores de visión artificial, filtrado, características o matrices a aceleradores personalizados HLS/RTL, sin estar vinculada a modelos de clasificación específicos o direcciones de placa. La habilidad ayuda a establecer un flujo de trabajo completo: desde la definición de un contrato de tensor que especifica forma, tipo de dato, diseño, escalado, etc., hasta la verificación y optimización del rendimiento. Soporta la validación de resultados mediante comparación bit a bit con valores enteros de referencia o tolerancias absolutas para punto flotante, y proporciona scripts para ubicar discrepancias, analizar trazas de tiempo y gestionar el ciclo de vida de los buffers DMA. Es compatible con entornos PYNQ estándar, HLS y RTL, y trabaja con corrientes de datos AXI DMA o interfaces IODMA personalizadas. La habilidad asume que el usuario tiene acceso a una placa real, un entorno PYNQ funcional y al menos un conjunto de datos de referencia oro. Los desarrolladores pueden usar esta habilidad para depurar resultados inconsistentes (comparando paso a paso las salidas de preprocesamiento, cuantización y PL), identificar cuellos de botella de rendimiento (midiendo tiempos de cola, DMAs y postprocesamiento por separado), o migrar diseños entre diferentes placas con requisitos de hardware y direcciones de memoria distintos.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Coldsnow123/Yunheng-eye-PYNQ7020/tree/HEAD/skill/pynq-cv-accelerator

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Despliegue de operadores de visión en PYNQ

El objetivo es hacer que los arreglos de software, las interfaces de hardware y los resultados de verificación se correspondan entre sí. Primero determine si el usuario debe desplegar un nuevo operador, localizar una falla existente u optimizar el rendimiento, y utilice las licencias y estados de ingeniería ya establecidos; no convierta cada tarea en un reentrenamiento o refactorización completo.

Entrada mínima

Se necesita el algoritmo/preprocesamiento, al menos un conjunto de datos de entrada/salida de referencia oro, el bit/HWH o el toplevel HLS, y una placa real con entorno PYNQ. Si falta algún elemento, realice primero las comprobaciones fuera de línea que los datos disponibles permitan y señale qué conclusiones dependen del material faltante.

Lea la guía de migración y complete el contrato de tensor. El ejemplo es un tensor genérico de escala de grises, no una configuración de hardware que se pueda cargar directamente en cualquier placa. Para un modelo nuevo se deben determinar nuevamente: shape, dtype, layout, color, escalado/relleno, escalas de cuantización, redondeo, saturación, decodificación de salida y cantidad de bytes a transmitir. Los formatos a nivel de bits como INT4 empaquetado requieren reglas de empaquetado adicionales; el comprobador de contratos actual solo acepta arreglos numéricos desempaquetados.

Seleccionar ruta de validación

  • Primera conexión: Revisión del contrato → referencia entera fija de entrada → salida PL cruda de un solo cuadro → cuadros continuos → precisión de aplicación → temporización segmentada.
  • Resultados inconsistentes: Guarde paso a paso las salidas de preprocesamiento, nodos de cuantización y el tensor PL crudo, y localice la primera diferencia; no modifique umbrales de posprocesamiento para ocultar errores de etapas anteriores.
  • Rendimiento o latencia anormales: Fije condiciones de entrada, registre los números de cuadro y marcas de tiempo en el mismo dominio de reloj; use el script de temporización para distinguir colas, PL/DMA y posprocesamiento.
  • Cambio de placa: Reidentifique DMA, ancho de dirección, coherencia de caché, reloj, reinicio e interrupciones; conserve la referencia de oro y el método de comparación.

El prompt completo y reutilizable se encuentra en flujos de trabajo; lea solo el correspondiente a la tarea actual.

Hardware y buffers

Primero distinga entre AXI DMA estándar y el IODMA HLS personalizado. Para el modo simple estándar puede consultar la plantilla de adaptación; las interfaces personalizadas deben implementarse según los registros y el contrato de longitud fija/TLAST. No confunda los nombres de la API de Python con protocolos de hardware.

Los buffers continuos requieren una propiedad clara: la CPU escribe y luego sincroniza al dispositivo; una vez que el hardware termina y no se accederá más, sincronice de vuelta a la CPU. En caso de excepción, conserve los buffers en tránsito y no los libere incondicionalmente en finally. Los detalles se encuentran en ciclo de vida DMA.

HWH es una descripción de interfaz, no demuestra que el bit en disco ya se haya cargado. Al enlazar hardware ya cargado, verifique la identidad de carga, dirección y referencia de salida. Si la LCD y la inferencia comparten el PL, no se puede obtener hardware combinado cargando secuencialmente dos Overlays completos.

Validación y optimización

En principio, la salida cruda del hardware para enteros debe coincidir elemento a elemento de manera exacta; para algoritmos de punto flotante use una tolerancia absoluta predefinida y registre el dtype y los valores no finitos. Use el script de comparación y no reemplace las correcciones de interfaz ampliando la tolerancia. La precisión del modelo cuantizado y la consistencia de implementación se evalúan por separado.

Verifique simultáneamente LUT, Slice, FF, BRAM, DSP, temporización y contrapresión de flujo. Compare FIFOs contra pesos fijos, entrada, frecuencia y paralelismo; liste los resultados después de cambios en el modelo por separado. El rendimiento se calcula dividiendo los cuadros completados efectivamente por la ventana de medición real; la latencia se calcula por el tiempo entre los dos extremos del mismo cuadro, sin sumar medianas de etapas.

Entregue el contrato, salida cruda, identidad de fuente/bit/HWH, resultados de revisión y rango de medición. Los errores comunes y condiciones de fallo de métodos se encuentran en la lista de depuración. El efecto del proyecto y los límites de portabilidad están en la guía de validación.

Skills relacionados