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 |
- MATLAB HDL Coder [6] da Mathworks
- HLS-QSP da CircuitSutra Technologies
- C-to-Silicon da Cadence Design Systems
- Aceleração simultânea de EDA simultâneo
- Symphony C Compiler da Synopsys
- QuickPlay de PLDA
- PowerOpt da ChipVision
- Cintetizador da Forte Design Systems (agora Stratus HLS da Cadence Design Systems )
- Catapult C da Calypto Design Systems , parte da Mentor Graphics a partir de 2015, 16 de setembro
- PipelineC [7]
- CyberWorkBench da NEC
- Mega Hardware
- C2R da CebaTech
- CoDeveloper da Impulse Accelerated Technologies
- HercuLeS por Nikolaos Kavvadias
- PICO da Synfora, adquirida pela Synopsys em junho de 2010 (PICO = Program In / Code Out)
- xPilot da Universidade da Califórnia, Los Angeles
- Vsyn de vsyn.ru
- ngDesign de SynFlow
Veja também
- C para HDL
- Automação de projeto eletrônico (EDA)
- Nível de sistema eletrônico (ESL)
- Síntese lógica
- Verificação de alto nível (HLV)
- SystemVerilog
- Aceleraçao do hardware
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.