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

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 de FPGAs 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

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
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