Communitygithub.com

pynq-cv-accelerator

Conecta arrays numéricos ou tensores de imagem a operadores HLS/RTL no PYNQ, estabelecendo contratos de entrada/saída, gerenciando buffers contínuos e cache, comparando com referência dourada e localizando latências de pipeline. Ideal para implantação e migração de operadores de visão computacional, filtros, features e matrizes, sem vincular a modelos específicos ou endereços de placa.

O que é pynq-cv-accelerator?

Este skill permite que desenvolvedores de sistemas embarcados em FPGA conectem tensores de imagem ou arrays numéricos a operadores HLS/RTL no PYNQ, estabelecendo contratos de entrada e saída, gerenciando buffers contínuos e cache, comparando resultados com referência dourada e localizando latências de pipeline. Ele suporta múltiplas plataformas (PYNQ, Zynq, Zynq MPSoC) e é útil para implantação e migração de operadores de visão computacional, filtros, features e matrizes, sem vincular a modelos específicos ou endereços de placa. O skill opera através de um fluxo de validação em etapas: contrato de tensor, saída PL crua com referência inteira, quadros contínuos, precisão de aplicação e temporização segmentada. Para diagnóstico de problemas, ele oferece scripts para comparação de saídas PL, localização de divergências e análise de latência. A gestão de memória é feita através de buffers contínuos com propriedade explícita entre CPU e dispositivo, e a verificação inclui tanto precisão numérica quanto métricas de utilização de recursos (LUT, BRAM, DSP) e temporização.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Implantação de Operadores de Visão no PYNQ

O objetivo é fazer com que arrays de software, interfaces de hardware e resultados de validação correspondam entre si. Primeiro, determine se o usuário está implantando um novo operador, localizando uma falha existente ou otimizando desempenho, mantendo as autorizações e o estado do projeto já existentes; não transforme toda tarefa em um retreinamento ou refatoração completa.

Entrada Mínima

É necessário o algoritmo/pré-processamento, pelo menos um conjunto de entrada/saída dourada, a topologia bit/HWH ou HLS, a placa real e o ambiente PYNQ. Se algo estiver faltando, realize primeiro verificações offline com os materiais disponíveis, indicando quais conclusões ainda dependem do material ausente.

Leia as instruções de portabilidade e preencha o contrato de tensor. O exemplo é um tensor de escala de cinza genérico, não uma configuração de hardware que possa ser carregada diretamente em qualquer placa. Novos modelos devem redefinir shape, dtype, layout, cor, escala/preenchimento, escala de quantização, arredondamento, saturação, decodificação de saída e número de bytes transmitidos. Formatos de nível de bit como INT4 empacotado exigem regras de empacotamento separadas; o verificador de contrato existente só aceita arrays numéricos não empacotados.

Selecionar Caminho de Validação

  • Primeira integração: Verificação de contrato → referência de entrada inteira fixa → saída PL crua para um único quadro → quadros contínuos → precisão da aplicação → temporização segmentada.
  • Resultados inconsistentes: Salve progressivamente os nós de pré-processamento, quantização e o tensor PL cru, localizando o primeiro ponto de divergência; não modifique limiares de pós-processamento para mascarar erros anteriores.
  • Vazão ou latência anormais: Fixe as condições de entrada e registre o número do quadro e o timestamp dentro do mesmo domínio de clock; use o script de temporização para diferenciar fila, PL/DMA e pós-processamento.
  • Troca de placa: Reidentifique DMA, largura de endereço, coerência de cache, clock/reset e interrupções; mantenha a referência dourada e o método de comparação.

O prompt completo e replicável está no fluxo de trabalho; leia apenas o item correspondente à tarefa atual.

Hardware e Buffers

Primeiro, diferencie entre AXI DMA padrão e HLS IODMA personalizado. Para o modo simples padrão, consulte o modelo de adaptação; interfaces personalizadas devem ser implementadas de acordo com registros e contratos de comprimento fixo/TLAST. Não confunda nomes de API Python com protocolos de hardware.

Buffers contínuos exigem propriedade explícita: após escrita pela CPU, sincronize para o dispositivo; após conclusão do hardware e sem mais acesso, sincronize de volta para a CPU. Em caso de exceção, mantenha os buffers em trânsito e não libere incondicionalmente no finally. Detalhes em ciclo de vida DMA.

HWH é uma descrição de interface, não prova que o bit do disco foi carregado. Ao vincular hardware já carregado, verifique a identidade de carregamento, endereço e saída de referência. Quando LCD e inferência compartilham PL, não é possível obter hardware combinado carregando dois Overlays completos sequencialmente.

Validação e Otimização

Em princípio, a saída PL crua de inteiros deve ser exatamente igual elemento por elemento; para aritmética de ponto flutuante, use uma tolerância absoluta predefinida, registrando o dtype e valores não finitos. Use o script de comparação e não substitua a correção da interface por tolerâncias ampliadas. Avalie a precisão do modelo quantizado e a consistência da implementação separadamente.

Verifique simultaneamente LUT, Slice, FF, BRAM, DSP, temporização e backpressure de fluxo. FIFO deve ser verificado contra pesos fixos, entrada, frequência e paralelismo; resultados após alteração do modelo devem ser listados separadamente. A vazão é calculada dividindo o número de quadros efetivamente concluídos pela janela de medição real; a latência é calculada pelo tempo entre dois pontos do mesmo quadro, não somando medianas de cada estágio.

Entregue contrato, saída crua, identidade de fonte/bit/HWH, resultados de verificação e faixa de medição. Erros comuns e condições de falha do método estão na lista de depuração. O efeito do projeto e os limites de portabilidade estão nas instruções de validação.

Habilidades Relacionadas