Tellement de réponses que je ne les ai pas toutes lues, étant quelqu'un qui est assis des deux côtés de la clôture, du matériel et des logiciels ....
Donc, alors qu'il s'agit à tous égards d'un langage de programmation qui est compilé dans d'autres langages, idéalement de niveau inférieur (C vers asm ou code machine, JAVA vers bytecode ou autre langage ou code assembleur ou machine, etc.). Il y a beaucoup plus d'étapes et les cibles sont beaucoup plus variées que isa qui sont aussi courantes que différentes: add, mov, jne, push, pop, etc.
Le code machine des fpgas ou asics n'est pas seulement des transistors discrets, mais une bibliothèque de choses. Pour les asics pour une fonderie et un processus particuliers, il existe une ou plusieurs bibliothèques de cellules disponibles et elles auront des portes simples et et ou mais aussi des choses plus grandes et plus compliquées, pourquoi construire un loquet à partir de composants discrets lorsque les auteurs de la bibliothèque peuvent créer une taille commune et emballez-le de manière efficace (immobilière). Ainsi, comme pour tout compilateur ou auteur de haut niveau, vous parcourez la liste des options et en choisissez quelques-unes. y compris une longue liste de srams de différentes largeurs et profondeurs. Pour un FPGA, ce sont des LUT ou des modules génériques fixes qui peuvent agir comme divers modules qui sont plus compliqués qu'une simple porte et, ou, xor.
Le monde FPGA aime garder les choses près de sa poitrine, aussi ils essaient d'être beaucoup plus abordables que les outils asic, des dizaines de milliers de dollars par an plutôt que des millions. Et comme tout autre environnement intégré, vous avez parfois divers fournisseurs qui ont été achetés ou licenciés et les outils collés ensemble (souvent pas très jolis).
Toutes les étapes mentionnées par les autres personnes ont donc eu lieu. ce qui est plus que le logiciel et les formats de fichiers sont très propriétaires et ne devraient pas être documentés ni pris en charge, chaque version pourrait changer. Encore une fois, ces gens semblent être compétitifs et secrets (s'ils s'ouvraient, nous pourrions avoir des outils nettement meilleurs et ils pourraient vendre plus de produits IMO, mais pourraient réduire l'argent de soutien, ce dont ils vivent peut-être avec leurs outils merdiques) .
Quand les gens disent netlist, le verilog est compilé dans une netlist, ceux que j'ai vus sont également en verilog ou vhdl comme ces langages le couvrent. Finalement, vous ciblerez le type spécifique, fpga, cpld, asic, etc. Le fpga étant une cible déjà câblée / fixe, vous vous retrouverez finalement avec une liste de fusibles ou de commutateurs si vous voulez, prenez un lut générique et connectez cette entrée à cela et cette entrée à cela en ouvrant et en fermant des connexions dans le maillage massif de choses. Ce qui finit par être une sorte de simple liste de marche et arrêt. Et je pense qu'il y a peut-être un standard jedec à ce sujet, mais souvent appelé bitstream et au moins nous utilisons un lecteur bitstream pour charger.
Les CPLD en général, vous programmez ces informations dans la partie elle-même, que ce soit un flash intégré qui ouvre / ferme les choses à la mise sous tension et / ou le stockage non volatile à l'intérieur s'allume avec les éléments câblés.
Les FPGA ont généralement un flash externe et à la mise sous tension, les informations pour connecter les éléments sont chargées à partir de cela, puis le reste de la partie est généré en utilisant cette configuration. Ceux que je connais à votre sujet peuvent également charger ces informations dans la pièce et effectuer toutes les connexions, mais ces informations sont perdues lorsque la pièce est mise hors tension. donc selon votre conception, vous pourriez avoir une autre solution et ne pas utiliser le flash. Le format flash est probablement propriétaire, je n'ai pas regardé personnellement, lorsque vous entrez par l'interface de programmation qui passe par le fpga au flash pour qu'il puisse aller tel quel ou il pourrait être converti en quelque chose d'autre.
Avec les logiciels, en particulier à cette époque et à cet endroit, nous sommes principalement habitués à ouvrir des trucs, de bons outils gratuits que beaucoup de gens utilisent. Ce qui signifie également que les formats de fichiers sont documentés et quelque peu courants, certains avaient un historique avant cette heure .com et .exes et d'autres pour d'autres systèmes d'exploitation de l'époque. Mais encore une fois, le monde du logiciel est plus commun que différent, vous visez idéalement le code machine ou le bytecode. Avec la logique, vous passez d'un niveau élevé à un niveau inférieur mais en utilisant le même langage jusqu'à un certain point. Ensuite, vous ciblez peut-être un simulateur qui a sa propre bibliothèque de modules ou fpga n avec sa bibliothèque ou fpga m avec sa bibliothèque et ainsi de suite. Et ces gens sont très protecteurs des informations.
Clifford et le projet IceStorm IMO est la bonne voie à suivre, c'est jusqu'à présent la seule fois où j'ai construit quelque chose pour un fpga qui soit simple, cela fonctionne, pas d'avertissements ni d'erreurs que les gens aiment souvent.J'ai passé d'innombrables nuits à essayer d'obtenir la chose la plus simple à construire pour un fpga de tous les principaux fournisseurs sans avertissement ... et j'abandonnerais toujours.Du verilog à la partie programmée, il y a au moins trois projets séparés, ce qui implique qu'il existe des fichiers intermédiaires que les deux côtés doivent prendre en charge pour que les formats de fichiers soient là.mais on s'attend à ce qu'il soit spécifique au projet et pas nécessairement comme un fichier elf qui est largement utilisé pour plus d'un cas d'utilisation.
Comprenez que le monde des puces, y compris les fpgas, est extrêmement coûteux, donc il est axé sur l'argent, ce qui signifie souvent vendre des outils et surtout des contrats de support annuels.Ce qui signifie des sources fermées, des informations fermées, et non des formats de fichiers documentés publiquement.