
██████╗ ██╗██████╗ ███████╗██╗ ██╗███╗ ██╗███████╗ ██████╗
██╔══██╗██║██╔══██╗██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝
██████╔╝██║██████╔╝█████╗ ██║ ██║██╔██╗ ██║█████╗ ██║
██╔═══╝ ██║██╔═══╝ ██╔══╝ ██║ ██║██║╚██╗██║██╔══╝ ██║
██║ ██║██║ ███████╗███████╗██║██║ ╚████║███████╗╚██████╗
╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝
N'hésitez pas à faire un message - très heureux de faire fonctionner Pipelinec pour vous! Toujours à la recherche d'aide aussi. -Julien
Commencer
Commencez par lire le wiki.
Qu'est-ce que Pipelinec?
Un linge de type C (1) du matériel (HDL) (2) ajoutant du pipeline automatique de synthèse de synthèse de haut niveau (HLS) (3) en tant que fonctionnalité de construction / compilateur de langage.
- Pas vraiment régulier C. mais peut être en partie compilé par GCC / LLVM pour effectuer une vérification fonctionnelle / «simulation» de base. Tendez la main si vous souhaitez développer une syntaxe de langage plus complexe!
- Peut raisonnablement remplacer Verilog / VHDL. Le compilateur produit des VHDL synthétisables et lisibles humains + débognables. Des crochets existent pour l'insertion de boîtes IP / Black VHDL / Black existantes.
- Si un calcul peut être écrit comme une fonction pure sans effets secondaires (c'est-à-dire pas de variables globales / statiques), il sera automatiquement automatique. Conceptuellement similaire à des technologies telles que Hyper-Pipelining de latence variable d'Intel et les options de réticulation de Xilinx. Partage de certains des objectifs de conception de pipeline dirigés par le compilateur du projet XLS de Google, de la langue Dfianthdl et de certains dialectes CIRCT.
Qu'est-ce que Pipelinec pas?
- Synthèse de haut niveau du code C arbitraire avec un modèle / threads de mémoire global / etc:
- Ne peut pas faire de «boucles imbriquées à une architecture de mémoire» pour vous.
- Simulator matériel basé sur C compilé:
- Seules les parties du code Pipelinec peuvent être compilées par les compilateurs C et exécutées (est encouragée).
- Mais des conceptions entières multi-modules, multi-horlodues, etc. ne peuvent pas simplement être compilées et s'exécuter comme des programmes C ordinaires.
- Générateur matériel de méta-programmation (Ex. Utilise le système de type C et le préprocesseur).
- Outil de couture automatisant le flux de construction du code / modules à BitsTtream:
- L'outil automatise partiellement des exécutions de synthèse, mais l'automatisation vers le flux de bits final est laissée à l'utilisateur.
Caractéristiques / avantages de base
Un langage de description du matériel facile à comprendre avec un puissant compilateur automatique et un ensemble croissant de fonctionnalités inspirées de conception matérielle réelle.
- La syntaxe C familière qui élimine de nombreuses bizarreries HDL auxquelles les débutants (et les experts) peuvent être victimes (ex. Blocking / non blocking, raisonnement sur l'ordre séquentiel de la logique combinatoire).
- Compatible avec tous les simulateurs HDL. Ex. Peut démarrer Modelsim en quelques secondes et importe des VHDL débordables humains + débognables avec des imprimés en travail. Peut également élaborer des «simulations» en C compilées ultra-rapides personnalisées. La conversion en verilog est également incluse selon les besoins, c'est-à-dire pour Verilator.
- Rétroaction de synchronisation utile dérivée des rapports d'outils de synthèse pour aider à identifier la logique de chemin critique qui ne peut pas être automatiquement pipeline - particulièrement utile pour les nouveaux conception de la logique numérique.
- S'intègre facilement au côté logiciel C facilement; utile de génération de code intégrée. (Ex. Pour les structures UN / Emballage à partir de tableaux d'octets de / sérialisés lors du déplacement des données de Host <-> FPGA).
- Un matériel complet description du langage remplacement. Peut commencer par cloner les conceptions VHDL / Verilog existantes ou y compris le VHDL brut - pas obligé d'utiliser entièrement la langue à tout moment.
- Les fils point à point visibles à l'échelle mondiale, les traversées de domaine d'horloge multi-taux / largeur et les FSM dérivés complexes ne sont qu'une partie de la liste croissante des fonctionnalités de composabilité inspirées des exigences / tâches de conception de matériel réel.
- Pipeline automatique comme caractéristique du compilateur. L'utilisation de base de l'outil peut être de générer des pipelines uniques pour passer à des conceptions existantes ailleurs. Éliminez la pratique de la logique de pipeline à la main = non portable (repose sur la fréquence et la partie de fonctionnement).
Les éléments de conception fondamentaux sont des machines d'État / des éléments avec état (registres, RAM, etc.), des fonctions pures sans statistiques auto-pipelinées et des interconnexions (fils, CDC, FIFOS asynchrones, etc.). Les conceptions peuvent être structurées pour ressembler à «communiquer des processus / threads séquentiels» au besoin.
En isolant la logique complexe dans des fonctions autopipénables et en écrivant uniquement l'horloge littérale par un matériel d'horloge description Si absolument nécessaire, les conceptions de pipelinec ne doivent pas être réécrites pour chaque nouveau périphérique cible / fréquence de fonctionnement. L'espoir est de construire des conceptions de matériel partagées, hautes performances, de périphérique, décrites dans un look de langage C familier et puissamment composable.
Pour les logiciels, les gens qui écrivent Pipelinec devraient avoir envie de résoudre un puzzle de programmation en C - Les règles du puzzle Hide / Imply Hardware Concepts. Pour les gens de matériel, Pipelinec est une meilleure description matérielle du langage essayant de trouver un terrain d'entente entre RTL traditionnel et HLS. C'est ma langue de choix en tant qu'ingénieur FPGA :).