Visão geral

AMD Vitis™ HLS para produtividade e projetos intuitivos

A ferramenta AMD Vitis™ HLS permite que os usuários criem facilmente algoritmos complexos de FPGA sintetizando uma função C/C++ em RTL. A ferramenta Vitis HLS está bem integrada com o Vivado™ Design Suite para síntese, local e rota e a plataforma de software unificada Vitis™ para projetos e aplicações de sistemas heterogêneos.

  • Usando o fluxo do Vitis HLS, os usuários podem aplicar diretivas ao código C para criar o RTL específico para uma implementação desejada.
  • É possível criar várias arquiteturas de projeto a partir do código-fonte C. Além disso, há um caminho para RTL correto por construção e de alta qualidade habilitado.
  • A simulação em C pode ser usada para validar o projeto e permite iterações mais rápidas do que uma simulação baseada em RTL tradicional. 
  • A ferramenta Vitis HLS apresenta um rico conjunto de ferramentas de análise e depuração que facilitam a otimização do projeto. 
AMD Vitis HLS Tool diagram

O AMD Vitis HLS permite fácil implementação de projetos de alto desempenho. Os valores de referência da AMD mostram que muitos projetos podem atingir a FMAX de 500 MHz ou mais usando uma metodologia de programação de alto nível com o Vitis HLS.

Ampliar imagem
Designs Benchmarked with vitis HLS-f

AMD Vitis™ HLS Performance Pragma

O AMD Vitis HLS tem um novo pragma com desempenho de nível superior que ajuda você a alcançar uma alta QoR. Consulte o módulo técnico para obter mais informações sobre como usar esse novo recurso.

Metodologia de projeto

AMD Vitis HLS Programming Model diagram

Modelo de programação do Vitis HLS

O código C do Vitis HLS é desenvolvido para aproveitar os benefícios e as características oferecidos pela arquitetura deFPGAs e SoCs adaptativos da AMD.

A ferramenta Vitis HLS suporta construções de programação paralela para modelar uma implementação desejada. Essas construções incluem:

  • Tarefas de HLS que permitem simultaneidade no nível do processo
  • Vetores de HLS que permitem o paralelismo no nível de dados
  • Fluxos de HLS que permitem a comunicação entre tarefas simultâneas
  • Os pragmas de síntese podem ser usados para controlar os resultados. Esses pragmas incluem pipeline, unroll, particionamento de matriz e protocolos de interface.
  • Para obter detalhes adicionais, consulte a seção "Guia de programadores de HLS" no Guia do usuário de síntese de alto nível do Vitis.

Geração de código C++ MATLAB para HLS

As funções desenvolvidas no MATLAB® podem ser sintetizadas em código C++ compatível com AMD Vitis™ HLS por meio dos recursos de geração de código do MathWorks HDL Coder, disponível no MATLAB R2025a.


Esse código C++ sintetizável e gerado pode servir como entrada para o Vitis™ HLS. Este fluxo de trabalho pode agilizar o processo de conversão de um projeto de algoritmo de alto nível (normalmente feito no MATLAB) para uma implementação de RTL de baixo nível.


Use o MATLAB e o HDL Coder para projetar e criar test benchs e, em seguida, use o recurso de geração de código do HDL Coder para inserir no Vitis HLS para simulação e síntese em FPGAs e SoCs adaptativos da AMD.


Para saber mais, visite a página do MathWorks HDL Coder.

Conversão de C para RTL

A ferramenta Vitis HLS sintetiza diferentes partes do código C:

  • Os argumentos de função de nível superior do código C/C++ são sintetizados nas portas de E/S de RTL e são automaticamente implementados com um protocolo de hardware de síntese de interface.
  • Outras funções C são sintetizadas em blocos de RTL, mantendo a hierarquia do projeto.
  • Os loops de função C são mantidos como rolled ou em pipeline para melhorar o desempenho.
  • As matrizes no código C podem ser direcionadas a qualquer recurso de memória, como BRAM, LUTRAM e URAM.
  • Métricas de desempenho, como latência, intervalo de iniciação, latência de iteração de loop e utilização de recursos, podem ser revisadas com relatórios de síntese.
  • As diretivas de pragmas e otimização da ferramenta Vitis HLS permitem configurar os resultados da síntese para o código C/C++. 
AMD Vitis HLS C-to-RTL Conversion diagram
AMD Vitis HLS simulation and verification diagram

Simulação e verificação

A ferramenta Vitis HLS contém fluxos de simulação incorporados para possibilitar tempos de verificação mais rápidos:

  • A simulação em C valida a funcionalidade do código C. Essa etapa é rápida e usa um testbench em C.
  • A cossimulação de C/RTL reutiliza um testbench em C para realizar a validação no RTL gerado, verificando se o RTL é funcionalmente idêntico ao código-fonte C. 
  • O fluxo tem recursos integrados de análise, depuração e visualização de forma de onda, bem como suporte popular ao simulador.

Exportação de IP

A saída da ferramenta Vitis HLS é uma implementação RTL que pode ser colocada em pacote para um arquivo de objeto compilado (.xo) ou exportada para um IP RTL:

  • Os arquivos de objeto compilados (.xo) são usados para criar funções de aceleração de hardware para uso no fluxo de desenvolvimento do aplicativo Vitis.
  • O IP RTL pode ser usado de três maneiras:
    • Adicionado usando a ferramenta de integração de IP Vivado™
    • Importado como um bloco RTL no Vivado IDE
    • Usado como um único conjunto de blocos no Vitis Model Composer para aplicações de DSP
AMD Vitis HLS IP Export diagram

O que há de novo

  1. 2025.1
  2. 2024.2
  3. 2024.1
  4. 2023.2
  5. 2023.1
  6. 2022.2
  7. 2022.1
  8. 2021.2
  9. 2021.1

Destaques da versão 2025.1

  • Gere o código C++ compatível com Vitis HLS a partir de projetos MATLAB (.m) usando o HDL Coder e MATLAB R2025a
  • Novos recursos de facilidade de uso do Vitis HLS
    • Modelagem de entradas de fios e entradas AXI Lite que mudam durante a execução (E/S direta)
    • Pragma de desempenho para o projeto HLS de nível superior (acesso antecipado aberto)
    • Suporte para complex multiplier Versal por meio da biblioteca intrínseca dedicada
    • Melhorias na GUI do Vitis HLS
    • Suporte inicial C++17 via Clang 16

Destaques da versão 2024.2

O Vitis HLS versão 2024.2 inclui uma série de recursos que facilitam o desenvolvimento e a depuração de um projeto HLS; entre eles:

  • Modelagem de entradas escalares/de fios que mudam durante a execução (E/S direta)
  • Suporte para tipos de ponto flutuação de precisão arbitrária
  • Mapeamento do código HLS para blocos de DSP
  • Sequência determinada pelo usuário da execução do código
  • Depurador HLS que mostra tipos de dados de maneira amigável (usando a tecnologia de prettyprint do depurador GNU)

Destaques da versão 2024.1

  • Um novo pragma de estêncil simplifica o código HLS em C++ para imagens e vídeos
  • Novos assistentes de função de biblioteca aproveitam o repositório GitHub das bibliotecas do AMD Vitis

    • Crie IPs "Solver" e "Vision" (compatível com OpenCV) para a ferramenta de projetos do AMD Vivado
    • Execute os exemplos de biblioteca disponíveis
  • Agora, o pragma para interface de memória (ap_memory) pode agrupar portas para o AMD Vivado IP Integrator​

  • A nova comparação de componentes HLS exibe métricas lado a lado para 2 ou mais componentes

  • Suporte para código RTL do provedor de usuário para substituir uma função do C++ (fluxo de black-box)

  • Agora, o analisador de código pode desagregar membros de estrutura em C++ para ajustar a análise de desempenho

  • Novo controle de usuário para codificação de FSM global de HLS e seleção de estado seguro

  • Acesso a limpadores de clang durante a simulação em C para realizar verificações de endereço e de inicialização

Destaques da versão 2023.2

  • Novo Vitis™ Unified IDE para componentes HLS
  • Novos requisitos de licença do Vitis HLS
  • Novo recurso do analisador de código para obter estimativas de desempenho antes de executar a síntese em C
  • Aprimoramentos na interface AXI:
    • Aprimoramentos no suporte de canal lateral de transmissão AXI de HLS
    • Suporte para cache principal AXI configurável pelo usuário
  • Outros aprimoramentos:
    • Novo relatório de complexidade de código para possibilitar a identificação de problemas de tamanho de projeto durante a síntese em C
  • Aprimoramentos no tempo de compilação: Aprimoramento médio no tempo de compilação de 20% na versão 2023.2 em comparação com a versão 2023.11

Destaques da versão 2023.1

  • Aprimoramentos de desempenho2: Aprimoramentos médios de latência de 5,2% na versão 2023.1 em comparação com a versão 2022.2
  • Maneira fácil de baixar, visualizar e instanciar funções de bibliotecas de L1 na ferramenta Vitis HLS. Assista ao vídeo
  • Suporte aprimorado para transações de AXI e relatórios de bursts na ferramenta Vitis HLS

Destaques da versão 2022.2

  • Nova maneira de gravar código "paralelo no nível da tarefa" para aplicações de processamento de dados
    • O usuário pode definir explicitamente o paralelismo no nível da tarefa usando a nova função hls::task
    • Mais fácil de modelar para projetos puramente de streaming (por exemplo, comutação de pacotes)​
  • Aprimoramentos de temporização e desempenho
    • A ferramenta infere automaticamente unroll, pipeline, partições de matriz e pragmas em linha para um melhor desempenho
  • Aprimoramentos de análise e depuração
    • Novo recurso para sintetizar instruções de impressão a partir da fonte C no código RTL gerado
    • Quando o RTL é simulado, isso permite rastrear a execução de um bloco de código e o valor de uma variável
  • Facilidade de uso
    • A interface hls::stream agora é compatível para IPs FFT e FIR

Destaques da versão 2022.1

  • Novo visualizador de rastreamento de linha de tempo
    • Mostra o perfil de tempo de execução de todas as funções sobreviventes em seu projeto, ou seja, aquelas que são convertidas em módulos
    • Especialmente útil para ver o comportamento das regiões de fluxo de dados após a cossimulação. Nativo para Vitis™ HLS — não é mais necessário iniciar o visualizador de forma de onda xsim
  • Novo pragma de desempenho
    • A HLS mostra qual é o seu destino de produtividade usando #pragma hls performance
    • A HLS tentará atingir a meta, se possível, usando menos recursos
    • A HLS indicará as transformações realizadas e, se não conseguir atingir o alvo, indicará o fator limitante
  • Suporte à partição de matriz para o tipo fluxo de blocos
    • Aprimoramento de hls::stream em que cada elemento é uma matriz
    • Pode ser usado para dividir o processamento de matriz grande em partes menores e com pipeline

Destaques da versão 2021.2

  • Inferência de burst controlada pelo usuário
    • O usuário pode adotar a nova otimização manual de burst
    • Uma nova classe "hls::burst_maxi" foi adicionada para oferecer suporte ao controle manual do comportamento de burst. Novas APIs de HLS são fornecidas para uso junto com a nova classe.
    • Os usuários precisam entender o protocolo AXI AMBA e a modelagem em nível de transação de hardware no projeto de HLS
  • Aprimoramentos de temporização e de Qualidade dos resultados
    • Melhora a precisão da estimativa de temporização de HLS. Quando a HLS relata o encerramento de temporização, a síntese de RTL no Vivado™ também deve esperar cumprir a temporização
  • Aprimoramentos de EoU
    • Adicione o relatório de adaptadores de interface no relatório de síntese em C
    • Os usuários precisam saber o impacto dos recursos que os adaptadores de interface têm em seu projeto
    • Os adaptadores de interface têm propriedades variáveis que afetam a QoR do projeto
    • Adicione uma nova seção ao relatório de síntese para mostrar a lista de pragmas e advertências sobre pragmas
  • Aprimoramentos de análise e geração de relatórios
    • Nova capacidade de aumentar e diminuir o zoom baseada em arrastar do mouse
    • Novo recurso de visão geral que mostra o gráfico completo e permite que o usuário aumente o zoom em partes do gráfico geral
    • Todas as funções e loops são mostrados junto com seus dados de simulação
    • Um novo Timeline Trace Viewer agora está disponível após a simulação. Este visualizador mostra o perfil de tempo de execução do seu projeto e permite que o usuário permaneça na GUI do Vitis HLS

Destaques da versão 2021.1

  • Novo "Navegador de fluxo" na GUI para acesso rápido às fases de fluxo e relatórios.  As visualizações contextuais "síntese, análise, depuração" são mescladas em um contexto padrão geral
  • Nova seção de relatório de síntese para as diretivas BIND_OP e BIND_STORAGE
  • Um novo relatório de texto pós-síntese reflete as informações fornecidas no relatório de síntese da GUI
  • Os widgets de execução exportação IP e de implementação do Vivado™ foram reprojetados com opções para passar arquivos de configurações e restrições para o Vivado
  • Novo visualizador de grafo de chamada de função para visualizar funções e loops que podem ser destacados com uma área de destaque opcional para detectar pontos de acesso de utilização de II, latência ou DSP/BRAM
  • Calibração de temporização do Versal™ e novos controles para operações nativas de ponto de flutuação de bloco de DSP (a opção de precisão para config_op)
  • A opção alternativa de pipeline descarregável foi melhorada (pipeline de execução livre, também conhecida como "frp")
  • No Vitis, a remodelação das interfaces m_axi deve ser feita por meio dos tipos de hls::vector
  • Novas opções de personalização para armazenamento de dados s_axilite e m_axi que podem ser "auto, "uram", "bram" ou "lutram", permitindo que você ajuste a utilização da RAM no seu projeto
  • No Vitis, apresentamos um novo modo de execução contínuo (também conhecido como "never-ending") para o kernel
  • A opção de relógio secundário axi_lite foi reinstalada

Histórias de sucesso

Sucesso do cliente do Vitis HLS: Intuitive Surgical

A Intuitive Surgical, líder mundial em robôs cirúrgicos, usa FPGAs para implementar alguns de seus requisitos de geração de imagens de alto desempenho.

Uma função para a qual eles precisavam criar protótipos era uma função de distorção de imagem para resolução de 4K a 60 frames por segundo (FPS). O projeto tinha requisitos rigorosos de latência. Devido a restrições de tempo, eles decidiram implementar essa função usando o Vitis HLS. O código foi desenvolvido do zero com o suporte técnico da equipe AMD Vitis HLS. Todo o processo de projeto levou cerca de duas semanas e as metas de desempenho foram atingidas.

"A distorção de imagem é uma operação complexa em FPGAs e pode levar vários meses quando implementada usando RTL. A abordagem baseada no Vitis HLS nos permitiu implementar rapidamente o projeto. Embora o projeto não tenha sido totalmente otimizado, a velocidade com que alcançamos a prototipagem foi fenomenal, demonstrando os benefícios de HLS. Esse método facilitou iterações rápidas e, com o suporte da equipe de HLS da AMD e ajustes nos pragmas aplicados, conseguimos colocar o projeto em funcionamento com sucesso no SoC e FPGA em um prazo sem precedentes. Temos utilizado e pretendemos continuar utilizando a HLS para nossas funções de imagem."

- Azhar Sufi, Gerente Sênior, Firmware — Imagens, Intuitive Surgical

Audio DSP to FPGA Compilation Solution Powered by AMD Zynq™ SoCs and Vitis™ HLS
Alcance uma latência ultrabaixa em um DSP de áudio para FPGA com Vitis HLS

A equipe de pesquisa Emeraude da INSA Lyon está trabalhando no desenvolvimento de novas técnicas de processamento de sinal para sistemas de áudio incorporados. A equipe implementou um programa de DSP de áudio de latência ultrabaixa usando a ferramenta AMD Vitis HLS. Clique aqui para saber mais sobre como a ferramenta Vitis HLS ajudou a equipe a alcançar latência ultrabaixa em uma compilação de áudio de DSP para FPGA.

Estudo de caso do cliente

Exploração de espaço do projeto mais rápida com o Vitis HLS

"A principal vantagem da ferramenta AMD Vitis™ HLS, do meu ponto de vista, é o recurso de exploração de espaço do projeto. Você pode gerar diferentes arquiteturas e implementações em um tempo razoável usando diretivas de otimização (pipeline, unroll etc.). Isso não pode ser feito se você codificar manualmente com VHDL/Verilog. Um bom recurso do Vitis HLS é a possibilidade de fazer uma cossimulação e uma validação do código HDL para garantir que o código HDL esteja funcionalmente correto." Dr. Frank Kesel — Professor da Universidade de Pforzheim, Alemanha

Estudo de caso do cliente

AMD Zynq™ SoC based Radar Sensor System

Recursos

Notas de rodapé
  1. Com base em testes realizados em 10 de agosto de 2023, em 1.000 projetos de biblioteca de códigos do Vitis L2/L3, com o Vitis HLS versão 2023.2 em comparação com o Vitis HLS 2023.1. Configuração do sistema durante os testes: CPU Intel Xeon E5-2690 v4 a 2,6 GHz, 256 GB de RAM e RedHat Enterprise Linux 8.6. Há variação no desempenho real. Os fabricantes de sistemas podem variar as configurações, gerando resultados diferentes. -VGL-04
  2. Os testes de valor de referência foram realizados em todos os 1.208 projetos de código C da biblioteca do Vitis L1 em 12 de fevereiro de 2023. Todos os projetos foram executados usando um sistema com 2P CPUs Intel Xeon E5-2690 com CentOS Linux, SMT habilitado e Turbo Boost desabilitado. Não se espera que a configuração de hardware tenha efeito nos resultados dos testes de software. Os resultados podem variar com base nas configurações e configurações de software e firmware — VGL-03