
██████╗ ██╗██████╗ ███████╗██╗ ██╗███╗ ██╗███████╗ ██████╗
██╔══██╗██║██╔══██╗██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝
██████╔╝██║██████╔╝█████╗ ██║ ██║██╔██╗ ██║█████╗ ██║
██╔═══╝ ██║██╔═══╝ ██╔══╝ ██║ ██║██║╚██╗██║██╔══╝ ██║
██║ ██║██║ ███████╗███████╗██║██║ ╚████║███████╗╚██████╗
╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝
Por favor, sinta -se à vontade para enviar uma mensagem - muito feliz em fazer o Pipelinec funcionar para você! Sempre procurando ajuda também. -Julian
Começando
Comece lendo o wiki.
O que é Pipelinec?
Uma linguagem de descrição de hardware do tipo C (1) (HDL) (2) Adicionando síntese de alto nível (HLS) como Pipelining automática (3) como um recurso de construção/compilador de idiomas.
- Na verdade, não é regular C., mas pode ser parcialmente compilado pelo GCC/LLVM para fazer verificação funcional básica/'simulação'. Alcance se estiver interessado em desenvolver sintaxe de linguagem mais complexa!
- Pode razoavelmente substituir o Verilog/VHDL. O compilador produz VHDL sintetizável e humano+VHDL deburgável. Existem ganchos para inserir caixas VHDL / Black existentes.
- Se um cálculo puder ser escrito como uma função pura sem efeitos colaterais (ou seja, sem variáveis globais/estáticas), ela será aprimorada automaticamente. Conceitualmente semelhante às tecnologias como a hiper-pipelinização de latência da Intel e as opções de retomada da Xilinx. Compartilhando alguns dos objetivos de design de pipelines de dois compiladores do projeto XLS do Google, o idioma Dfianthdl e alguns dialetos de circulação também.
O que não é Pipelinec?
- Síntese de alto nível do código C arbitrário com um modelo de memória global / threads / etc:
- Não pode fazer 'loops aninhados para uma arquitetura de memória' para você.
- Simulador de hardware baseado em C compilado:
- Somente partes do código PIELINEC podem ser compiladas pelos compiladores C e executados (são incentivados).
- Mas todo o domínio múltiplo, o domínio multi-clock, etc, não pode ser simplesmente compilado e executado como programas C regulares.
- Gerador de hardware de meta-programação (Ex. Usa sistema de tipo C e pré-processador).
- Ferramenta de costura automatizando o fluxo de construção de código/módulos para o BitStream:
- A ferramenta automatiza parcialmente a síntese é executada, mas a automação para o Final BitStream é deixada para o usuário.
Recursos/benefícios centrais
Uma linguagem de descrição de hardware fácil de entender com um poderoso compilador de autopipelining e um conjunto crescente de recursos inspirados no design de hardware da vida real.
- Sintaxe familiar C que elimina muitas peculiaridades de HDL que iniciantes (e especialistas) podem ser vítimas de (por exemplo, atribuições de bloqueio/não bloqueio, raciocínio sobre a ordem seqüencial da lógica combinatória).
- Compatível com todos os simuladores HDL. Ex. Pode iniciar o ModelsIM em segundos e importar o VHDL ladável em humanos+de debugable w/ working printf. Também pode criar 'simulações' com base em C personalizadas compiladas. A conversão para o Verilog também é incluída conforme necessário, ou seja, para o verilator.
- Feedback de tempo útil derivado dos relatórios da ferramenta de síntese para ajudar a identificar a lógica crítica do caminho que não pode ser automaticamente pipelada - especialmente útil para aqueles novos no design da lógica digital.
- Integra -se ao lado do software C facilmente; Geração útil de código incorporado. (Ex. Para estruturas de embalagem un/de embalagem a partir de matrizes de bytes serializadas ao mover dados do host <-> FPGA).
- Uma substituição de linguagem de descrição de hardware completo. Pode começar clonando designs VHDL/verilog existentes ou incluindo VHDL bruto - não forçado a usar o idioma inteiro o tempo todo.
- Os fios ponto a ponto visíveis globalmente, cruzamentos de domínio com várias taxas/relógios e FSMs derivados complexos são apenas alguns dos recursos crescentes de recursos de composibilidade inspirados nos requisitos/tarefas de design de hardware da vida real.
- Pipelining automático como um recurso do compilador. O uso básico da ferramenta pode ser gerar pipelines únicos para cair em designs existentes em outros lugares. Elimine a prática da lógica de pipelining manualmente = não portátil (baseia -se na frequência e peça operacionais).
Os elementos de design fundamental são máquinas de estado/elementos com estado (registros, carneiros, etc.), funções puras sem estado e interconexões e interconexões (fios, cdc, fifos assíncronos, etc.). Os designs podem ser estruturados para parecer 'comunicação de processos/threads seqüenciais', conforme necessário.
Isolando a lógica complexa em funções automatizáveis e apenas escrevendo o relógio literal por descrição do hardware do relógio quando absolutamente necessário, os projetos PiELiNEC não precisam ser reescritos para cada novo dispositivo de destino / frequência operacional. A esperança é criar designs agnósticos de hardware e de alto desempenho compartilhados, de alto desempenho, descritos em uma aparência familiar e poderosa da linguagem C.
Para o software, as pessoas que escrevem Pipelinec devem ter como resolver um quebra -cabeça de programação em C - as regras dos conceitos de hardware de ocultação/imposição de hardware. Para o Hardware, o Pipelinec é uma melhor linguagem de descrição de hardware, tentando encontrar o meio termo entre o RTL e o HLS tradicionais. É o meu idioma de escolha como engenheiro FPGA :).