Síntese de alto nível - High-level synthesis

A síntese de alto nível ( HLS ), às vezes referida como síntese C , síntese em nível de sistema eletrônico (ESL) , síntese algorítmica ou síntese comportamental , é um processo de design automatizado que pega uma especificação comportamental abstrata de um sistema digital e encontra um registro -estrutura de nível de transferência que realiza o comportamento dado.

A síntese começa com uma especificação de alto nível do problema, onde o comportamento é geralmente desacoplado da mecânica do circuito de baixo nível, como a temporização de nível de relógio . O primeiro HLS explorou uma variedade de linguagens de especificação de entrada, embora pesquisas recentes e aplicativos comerciais geralmente aceitem subconjuntos sintetizáveis ​​de ANSI C / C ++ / SystemC / MATLAB . O código é analisado, arquitetonicamente restrito e programado para transcompilar em um projeto de nível de transferência de registro (RTL) em uma linguagem de descrição de hardware (HDL), que por sua vez é comumente sintetizado no nível de porta pelo uso de umferramenta de síntese lógica .

O objetivo do HLS é permitir que os designers de hardware construam e verifiquem o hardware de forma eficiente, dando-lhes melhor controle sobre a otimização de sua arquitetura de design e, por meio da natureza, permitir que o designer descreva o design em um nível mais alto de abstração enquanto a ferramenta faz o Implementação de RTL. A verificação do RTL é uma parte importante do processo.

O hardware pode ser projetado em vários níveis de abstração. Os níveis de abstração comumente usados ​​são o nível de porta , o nível de transferência de registro (RTL) e o nível algorítmico .

Enquanto a síntese lógica usa uma descrição RTL do projeto, a síntese de alto nível funciona em um nível mais alto de abstração, começando com uma descrição algorítmica em uma linguagem de alto nível, como SystemC e ANSI C / C ++. O designer normalmente desenvolve a funcionalidade do módulo e o protocolo de interconexão. As ferramentas de síntese de alto nível lidam com a microarquitetura e transformam código funcional não temporizado ou parcialmente temporizado em implementações RTL totalmente temporizadas, criando automaticamente detalhes ciclo a ciclo para implementação de hardware. As implementações (RTL) são então usadas diretamente em um fluxo de síntese lógica convencional para criar uma implementação de nível de porta.

História

Os primeiros trabalhos acadêmicos extraíram o agendamento, a alocação e a vinculação como as etapas básicas para uma síntese de alto nível. O planejamento de partições do algoritmo em etapas de controle que são usadas para definir os estados na máquina de estados finitos . Cada etapa de controle contém uma pequena seção do algoritmo que pode ser executada em um único ciclo de clock no hardware. Alocação e vinculação mapeiam as instruções e variáveis ​​para os componentes de hardware, multiplexadores, registros e fios do caminho de dados.

A síntese comportamental de primeira geração foi introduzida pela Synopsys em 1994 como compilador comportamental e usou Verilog ou VHDL como linguagens de entrada. O nível de abstração usado foram processos parcialmente cronometrados (cronometrados). As ferramentas baseadas em Verilog comportamental ou VHDL não foram amplamente adotadas em parte porque nem as linguagens nem a abstração parcialmente cronometrada eram adequadas para modelar o comportamento em um alto nível. 10 anos depois, no início de 2004, Synopsys end-of-lifed Behavioral Compiler.

Em 1998, a Forte Design Systems introduziu sua ferramenta Cynthesizer que usava SystemC como uma linguagem de entrada em vez de Verilog ou VHDL. O Cynthesizer foi adotado por muitas empresas japonesas em 2000, pois o Japão tinha uma comunidade de usuários SystemC muito madura. O primeiro tapeout de síntese de alto nível foi obtido em 2001 pela Sony usando o Cynthesizer. A adoção nos Estados Unidos começou para valer em 2008.

Entrada de fonte

As entradas de origem mais comuns para síntese de alto nível são baseadas em linguagens padrão como ANSI C / C ++ , SystemC e MATLAB .

A síntese de alto nível normalmente também inclui uma especificação executável com precisão de bits como entrada, uma vez que para derivar uma implementação de hardware eficiente, são necessárias informações adicionais sobre o que é um erro quadrático médio ou uma taxa de erro de bit aceitável, etc. Por exemplo, se o designer começa com um filtro FIR escrito usando o tipo flutuante "duplo", antes que ele ou ela possa derivar uma implementação de hardware eficiente, eles precisam executar refinamento numérico para chegar a uma implementação de ponto fixo. O refinamento requer informações adicionais sobre o nível de ruído de quantização que pode ser tolerado, os intervalos de entrada válidos, etc. Esta especificação com precisão de bits torna a especificação da fonte de síntese de alto nível funcionalmente completa. Normalmente, as ferramentas inferem do código de alto nível uma Máquina de Estados Finitos e um Caminho de Dados que implementam operações aritméticas.

Estágios do processo

O processo de síntese de alto nível consiste em várias atividades. Várias ferramentas de síntese de alto nível executam essas atividades em ordens diferentes usando algoritmos diferentes. Algumas ferramentas de síntese de alto nível combinam algumas dessas atividades ou as executam iterativamente para convergir para a solução desejada.

  • Processamento Lexical
  • Otimização de algoritmo
  • Análise de controle / fluxo de dados
  • Processamento de biblioteca
  • Alocação de recursos
  • Agendamento
  • Ligação de unidade funcional
  • Registrar vinculação
  • Processamento de saída
  • Rebundling de entrada

Funcionalidade

Em geral, um algoritmo pode ser executado em muitos ciclos de clock com poucos recursos de hardware ou em menos ciclos de clock usando um número maior de ALUs, registradores e memórias. Correspondentemente, a partir de uma descrição algorítmica, uma variedade de microarquitetura de hardware pode ser gerada por um compilador HLS de acordo com as diretivas fornecidas para a ferramenta. Este é o mesmo compromisso de velocidade de execução para complexidade de hardware visto quando um determinado programa é executado em processadores convencionais de desempenho diferente, mas todos funcionando aproximadamente na mesma frequência de clock.

Restrições arquitetônicas

As restrições de síntese para a arquitetura podem ser aplicadas automaticamente com base na análise do projeto. Essas restrições podem ser quebradas em

  • Hierarquia
  • Interface
  • Memória
  • Ciclo
  • Restrições de tempo de baixo nível
  • Iteração

Síntese de interface

Síntese de interface refere-se à capacidade de aceitar a descrição C / C ++ pura como sua entrada e, em seguida, usar a tecnologia de síntese de interface automatizada para controlar o tempo e o protocolo de comunicação na interface de design. Isso permite a análise de interface e a exploração de uma gama completa de opções de interface de hardware, como streaming, RAM de porta única ou dupla, além de vários mecanismos de handshaking. Com a síntese de interface, o designer não incorpora protocolos de interface na descrição da fonte. Os exemplos podem ser: conexão direta, uma linha, handshake de 2 linhas, FIFO.

Vendedores

Dados relatados em pesquisa recente

Status Compilador Proprietário Licença Entrada Saída Ano Domínio
Banco de Teste
FP FixP
Em uso Stratus HLS Cadence Design Systems Comercial C / C ++ SystemC RTL 2015 Tudo sim sim sim
AUGH TIMA Lab. Acadêmico Subconjunto C VHDL 2012 Tudo sim Não Não
excitar Explorações Y Comercial C VHDL / Verilog 2001 Tudo sim Não sim
Bambu PoliMi Acadêmico C VHDL / Verilog 2012 Tudo sim sim Não
Bluespec BlueSpec Inc. Comercial BSV SystemVerilog 2007 Tudo Não Não Não
QCC CacheQ Systems, Inc. Comercial C / C ++ / Fortan Executável do host + arquivo FPGA Bit (SystemVerilog é intermediário) 2018 Tudo - computação multi-core e heterogênea Sim (C ++) sim sim
CHC Altium Comercial Subconjunto C VHDL / Verilog 2008 Tudo Não sim sim
CoDeveloper Impulso acelerado Comercial Impulse-C VHDL 2003 imagem
Transmissão
sim sim Não
Codificador HDL MathWorks Comercial MATLAB, Simulink, Stateflow, Simscape VHDL / Verilog 2003 Sistemas de controle, processamento de sinais, wireless, radar, comunicações, imagem e visão computacional sim sim sim
CyberWorkbench NEC Comercial BDL, SystemC VHDL / Verilog 2011 Tudo Ciclo /
formal
sim sim
Catapulta Mentor
(negócios da Siemens)
Comercial C, C ++, SystemC VHDL / Verilog 2004 Tudo sim sim sim
DWARV TU. Delft Acadêmico Subconjunto C VHDL 2012 Tudo sim sim sim
GAUT U. Bretagne Acadêmico C / C ++ VHDL 2010 DSP sim Não sim
Hastlayer Lombiq Technologies Comercial C # / C ++ / F # ...
( .NET )
VHDL 2015 .INTERNET sim sim sim
SoC instantâneo Núcleos FPGA Comercial C / C ++ VHDL / Verilog 2019 Tudo sim Não Não
Compilador de síntese de alto nível Intel Intel FPGA (anteriormente Altera) Comercial C / C ++ Verilog 2017 Tudo sim sim sim
LegUp HLS LegUp Computing Comercial C / C ++ Verilog 2015 Tudo sim sim sim
Perna para cima U. Toronto Acadêmico C Verilog 2010 Tudo sim sim Não
MaxCompiler Maxeler Comercial MaxJ RTL 2010 DataFlow Não sim Não
ROCCC Jacquard Comp. Comercial Subconjunto C VHDL 2010 Transmissão Não sim Não
Symphony C Sinopse Comercial C / C ++ VHDL / Verilog /
SystemC
2010 Tudo sim Não sim
VivadoHLS
(anteriormente AutoPilot
da AutoESL)
Xilinx Comercial C / C ++ / SystemC VHDL / Verilog /
SystemC
2013 Tudo sim sim sim
kiwi U. Cambridge Acadêmico C # Verilog 2008 .INTERNET Não sim sim
CHiMPS U. Washington Acadêmico C VHDL 2008 Tudo Não Não Não
gcc2verilog EUA Coréia Acadêmico C Verilog 2011 Tudo Não Não Não
Hércules Compiladores Ajax Comercial C / NAC VHDL 2012 Tudo sim sim sim
Shang U. Illinois Acadêmico C Verilog 2013 Tudo sim ? ?
Tridente Los Alamos NL Acadêmico Subconjunto C VHDL 2007 Científico Não sim Não
aban-
doned
AccelDSP Xilinx Comercial MATLAB VHDL / Verilog 2006 DSP sim sim sim
C2H Altera Comercial C VHDL / Verilog 2006 Tudo Não Não Não
CtoVerilog U. Haifa Acadêmico C Verilog 2008 Tudo Não Não Não
DE FATO U. South Cailf. Acadêmico C RTL 1999 DSE Não Não Não
Garp U. Berkeley Acadêmico Subconjunto C bitstream 2000 Ciclo Não Não Não
PARTIDA U. Northwest Acadêmico MATLAB VHDL 2000 Imagem Não Não Não
Napa-C Sarnoff Corp. Acadêmico Subconjunto C VHDL / Verilog 1998 Ciclo Não Não Não
PipeRench U.Carnegie M. Acadêmico DIL bistream 2000 Stream Não Não Não
SACO U. Colorado Acadêmico SACO VHDL 2003 Imagem Não Não Não
Pepino do mar U. Brigham Y. Acadêmico Java EDIF 2002 Tudo Não sim sim
FAGULHA U. Cal. Irvine Acadêmico C VHDL 2003 Ao controle Não Não Não

Veja também

Referências

Leitura adicional

  • Michael Fingeroff (2010). Livro Azul de Síntese de Alto Nível . Xlibris Corporation. ISBN 978-1-4500-9724-6.
  • Coussy, P .; Gajski, DD; Meredith, M .; Takach, A. (2009). "Uma introdução à síntese de alto nível". Projeto IEEE e Teste de Computadores . 26 (4): 8–17. doi : 10.1109 / MDT.2009.69 . S2CID  52870966 .
  • Ewout SJ Martens; Georges Gielen (2008). Modelagem e síntese de alto nível de sistemas integrados analógicos . Springer. ISBN 978-1-4020-6801-0.
  • Saraju Mohanty ; N. Ranganathan; E. Kougianos e P. Patra (2008). Síntese de alto nível de baixa potência para circuitos CMOS em nanoescala . Springer. ISBN 978-0387764733.
  • Alice C. Parker ; Yosef Tirat-Gefen; Suhrid A. Wadekar (2007). "Design de nível de sistema". Em Wai-Kai Chen (ed.). O manual do VLSI (2ª ed.). CRC Press. ISBN 978-0-8493-4199-1. capítulo 76.
  • Shahrzad Mirkhani; Zainalabedin Navabi (2007). "Linguagens de design de nível de sistema". Em Wai-Kai Chen (ed.). O manual do VLSI (2ª ed.). CRC Press. ISBN 978-0-8493-4199-1. capítulo 86. cobre o uso de C / C ++, SystemC, TML e até UML
  • Liming Xiu (2007). Metodologia de projeto de circuito VLSI desmistificada: uma taxonomia conceitual . Wiley-IEEE. ISBN 978-0-470-12742-1.
  • John P. Elliott (1999). Compreendendo a síntese comportamental: um guia prático para o design de alto nível . Springer. ISBN 978-0-7923-8542-4.
  • Nane, Razvan; Sima, Vlad-Mihai; Pilato, cristão; Choi, Jongsok; Fort, Blair; Canis, Andrew; Chen, Yu Ting; Hsiao, Hsuan; Brown, Stephen; Ferrandi, Fabrizio; Anderson, Jason; Bertels, Koen (2016). "Uma pesquisa e avaliação de ferramentas de síntese de alto nível FPGA". Transações IEEE em Projeto Auxiliado por Computador de Circuitos Integrados e Sistemas . 35 (10): 1591–1604. doi : 10.1109 / TCAD.2015.2513673 . hdl : 11311/998432 . S2CID  8749577 .
  • Gupta, Rajesh; Brewer, Forrest (2008). "Síntese de alto nível: uma retrospectiva". "Síntese de alto nível: uma retrospectiva" . Springer. pp. 13–28. doi : 10.1007 / 978-1-4020-8588-8_2 . ISBN 978-1-4020-8587-1.

links externos