• Nenhum resultado encontrado

High-Level Synthesis with Forte Cynthesizer

N/A
N/A
Protected

Academic year: 2022

Share "High-Level Synthesis with Forte Cynthesizer"

Copied!
29
0
0

Texto

(1)

High-Level Synthesis with Forte Cynthesizer

Tópicos Avançados em Arquitetura de Computadores

(2)

Introdução

• Síntese de Alto Nível

• SystemC + C++

• Diretivas de controle de ferramenta

• Clock alvo + tecnologia

(3)

Construções de Alto Nível C++ Sintetizáveis

• Encapsulamento

– Suporte a classes em C++

– Suporte a métodos públicos e privados

• Construção de tipos de dados customizados – Suporte a sobrecarga de operadores

• Desenvolvimento de IP Configurável

– Suporte a templates de C++

(4)

Construtores de C++ Sintetizáveis

(5)

Construções de C++ Não Sintetizáveis

• Síntese faz uso de propriedades estáticas do código fonte

• Não utiliza informação da execução do código

(6)

Construções de C++ Não Sintetizáveis

• Aritmética de Ponteiros

• Dereferenciamento de ponteiros – Suportado em alguns casos

• Alocação dinâmica de memória – Malloc()

– Free() – New()

• Suportado para a alocação de sub-módulos

– Delete()

(7)

Estrutura de Módulo Sintetizável

Multiplos Threads

Multiplos Processos SC_Method

Funções C++

Declarações de Variáveis

(8)

Processos Concorrentes

• Processos de Alto Nível – SC_CTHREAD

• Processos RTL – SC_METHOD

• Suporte a Combinação de Processos de Alto Nível com Processos de Baixo Nível

– Algoritmo + RTL

(9)

Processos SC_CTHREAD

Processo baseado no Clock

(10)

Exemplo de SC_CTHREAD

Sinal de reset

Wait indica que dura apenas 1 ciclo Comportamento do reset

Comportamento do módulo

(11)

Processos SC_METHOD

Circuitos Síncronos

Circuitos Assíncronos

(12)

Interfaces Modulares

• Canais de Alto Nível para Comunicação

• Encapsulam sinais de baixo nível – Sinais

– Portas

– Protocolos

• Conexões feitas por interface

– Não é necessário conectar os fios individualmente

• Reuso de interface

– Projeta e testa uma vez

– Reusa várias vezes

(13)

Interfaces Modulares

(14)

Socket Modular de Saída

Protocolo Sinais

(15)

Socket Modular de Entrada

Protocolo Sinais

(16)

Uso de Interfaces Modulares

Declaração das Interfaces

Comportamento no reset

Uso da interface

(17)

Canais

(18)

Binding

Como realizar a conexão

Operador de conexão

Exemplo de Conexão

(19)

Hierarquia Estrutural

Bindings diferentes

(20)

Criando RTL com Comportamento Temporal Previsível

• Como garantir que o circuito funcionará na frequencia

e tecnologias selecionadas após a síntese lógica?

(21)

Como Cynthesizer Garante Isso

• Uso de informações de biblioteca de células

• Tecnologia de otimização de datapath – Biblioteca

• Somadores

• Multiplicadores

• Multiplexadores

• Criação de unidades funcionais customizadas – Somador de 12-bits + 3-bits

• “a + (b * c) -3”

• Uso de controles adicionais para garantir a síntese

(22)

Escalonamento

Escalonamento em modo misto

Diretiva de protocolo fixo

protocolo livre

(23)

Restringindo o Escalonamento

Realizar a computação em 4 ciclos

(24)

Escalonamento com Restrições

Execução em 4 ciclos

(25)

Escalonamento com Restrições

Execução em 6 ciclos

(26)

Laços

Loop unrolling

(27)

Loop Unrolling Parcial

(28)

Pipelining

(29)

Verificação

Referências

Documentos relacionados