
██████╗ ██╗██████╗ ███████╗██╗ ██╗███╗ ██╗███████╗ ██████╗
██╔══██╗██║██╔══██╗██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝
██████╔╝██║██████╔╝█████╗ ██║ ██║██╔██╗ ██║█████╗ ██║
██╔═══╝ ██║██╔═══╝ ██╔══╝ ██║ ██║██║╚██╗██║██╔══╝ ██║
██║ ██║██║ ███████╗███████╗██║██║ ╚████║███████╗╚██████╗
╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝
Por favor, no dude en el mensaje, ¡muy feliz de hacer que Pipelinec funcione para usted! Siempre buscando ayuda también. -Juliano
Empezando
Comience leyendo el wiki.
¿Qué es Pipelinec?
Un lenguaje de descripción de hardware de hardware (1) tipo C (HDL) (2) Agregar tuberías automáticas similares a la síntesis de alto nivel (HLS) (3) como característica de construcción/compilador de lenguaje.
- En realidad, no es regular C. pero puede ser parcialmente compilado por GCC/LLVM para hacer verificación funcional básica/'simulación'. ¡Comuníquese si está interesado en desarrollar una sintaxis de lenguaje más compleja!
- Puede reemplazar razonablemente Verilog/VHDL. El compilador produce sintetizable y legible humano+VHDL debuggable. Existen ganchos para insertar VHDL crudo / IP / cajas negras existentes.
- Si un cálculo se puede escribir como una función pura sin efectos secundarios (es decir, sin variables globales/estáticas), entonces se estará automáticamente. Conceptualmente similar a tecnologías como las opciones de retimación de hiperpipeling de latencia variable de Intel y de replicación de Xilinx. Compartir algunos de los objetivos de diseño de tuberías impulsados por el compilador del proyecto XLS de Google, el lenguaje DFIanthDL y ciertos dialectos CIRCT también.
¿Qué no es Pipelinec?
- Síntesis de alto nivel del código C arbitrario con un modelo de memoria global / hilos / etc:
- No se puede hacer 'bucles anidados para una arquitectura de memoria' para usted.
- Simulador de hardware basado en C compilado:
- Solo las partes del código Pipelinec pueden ser compiladas por los compiladores C y la ejecución (se recomienda).
- Pero los diseños completos de múltiples módulos, dominios múltiples, etc., etc., no se pueden compilar y ejecutar simplemente como programas C normales.
- Generador de hardware de metaprogramación (por ejemplo, utiliza el sistema de tipo C y el preprocesador).
- Herramienta de costura automatización del flujo de compilación de código/módulos a bitstream:
- La herramienta automatiza parcialmente las ejecuciones de síntesis, pero la automatización a BitStream final se deja al usuario.
Características/beneficios centrales
Un lenguaje de descripción de hardware fácil de entender con un poderoso compilador de piloto automático y un creciente conjunto de características inspiradas en el diseño de hardware de la vida real.
- La sintaxis de C familiar que elimina muchas peculiaridades HDL a las que los principiantes (y los expertos) pueden ser víctimas (ex. Asignaciones de bloqueo/no bloqueo, razonando sobre el orden secuencial de la lógica combinatoria).
- Compatible con todos los simuladores HDL. Ex. Puede iniciar modelos en segundos e importar humano legible+VHDL debuggable con impresiones de trabajo. También puede crear 'simulaciones' basadas en C basadas en C compiladas C personalizadas. La conversión a Verilog también se incluye según sea necesario, es decir, para Verilator.
- Comentarios de tiempo útil derivado de los informes de la herramienta de síntesis para ayudar a identificar la lógica de ruta crítica que no se puede canalizar automáticamente, especialmente útil para aquellos nuevos en el diseño de lógica digital.
- Se integra con el lado C del software C fácilmente; útil generación de código integrado. (Ej. Para estructuras UN/Embalaje de matrices de bytes DE/serializadas al mover datos del host <-> FPGA).
- Un reemplazo de lenguaje de descripción de hardware completo. Puede comenzar clonando diseños VHDL/Verilog existentes o incluyendo VHDL crudo, no obligado a usar todo el lenguaje en todo momento.
- Los cables punto a punto visibles a nivel mundial, los cruces de dominio de reloj múltiples y de ancho y los FSM derivados complejos son solo una de las crecientes listas de características de composibilidad inspiradas en los requisitos/tareas de diseño de hardware de la vida real.
- Tuberías automáticas como característica del compilador. El uso básico de la herramienta puede ser generar tuberías individuales para caer en los diseños existentes en otros lugares. Elimine la práctica de la lógica de tuberías a mano = no portátil (se basa en la frecuencia de operación y la parte).
Los elementos de diseño fundamentales son máquinas estatales/elementos estatales (registros, rams, etc.), funciones puras sin apáreas automáticas automáticas e interconexiones (cables, CDC, async fifos, etc.). Los diseños se pueden estructurar para parecer 'comunicar procesos/hilos secuenciales' según sea necesario.
Al aislar la lógica compleja en funciones automáticas, y solo escribir el reloj literal por el reloj Descripción de hardware Cuando es absolutamente necesario, los diseños de PipelInec no necesitan ser reescritos para cada nuevo dispositivo de destino / frecuencia operativa. La esperanza es construir diseños compartidos, de alto rendimiento, agnósticos, diseños de hardware descritos en un aspecto de lenguaje C familiar y poderosamente compuesto.
Para el software, la gente que escribe Pipelinec debe tener ganas de resolver un rompecabezas de programación en C - las reglas de los conceptos de hardware de Hide/Insying Hardware. Para el hardware, la gente de Pipelinec es un mejor idioma de descripción de hardware que intenta encontrar un término medio entre RTL y HLS tradicionales. Es mi idioma de elección como ingeniero de FPGA :).