• [^] # Re: Et pourquoi pas un objectif plus générique ?

    Posté par . En réponse à la dépêche OGD1 fonctionne comme carte vidéo. Évalué à 10.

    Je me réponds à moi-même pour développer mon précédent commentaire, et pour dire pourquoi il me semble que fondre un ASIC n'est pas intéressant pour le projet Open Graphics. Pour cela, je vais détailler les flots de conception FPGA et ASIC.


    FPGA

    Au commencement, il y a la description du design (phase de codage, en fait). Celle-ci de fait au niveau RTL (Register_Transfer_Level) dans un langage de haut-niveau, dit HDL (Hardware Description Language). En Europe, on utilise plutôt le VHDL alors qu'en Amérique du Nord, on utilise plutôt le Verilog.
    Puis, une fois la description terminée, on utilise un outil de simulation pour vérifier que cette description est correcte. À cette étape, on effectue une simulation dite « comportementale » : on cherche juste à vérifier que la description du design est correcte. À noter : le simulateur peut être le même quelque soit le flot (FPGA ou ASIC).

    Ensuite, on rentre réellement dans le flot FPGA. Chaque fournisseur de FPGA propose ses propres outils mais tous les flots font : la synthèse (traduction de la description RTL en description plus bas niveau à l'aide des éléments de la bibliothèque du fournisseur (ces éléments sont les éléments de base du FPGA)), le placement-routage (placement : positionnement de chaque élément dans la matrice du FPGA, routage : choix du chemin des signaux (un signal relie la sortie d'un bloc à l'entrée d'un ou plusieurs blocs)) puis la génération du fichier de programmation (qui sera chargé dans le FPGA pour le personnaliser).

    Avant de générer le fichier de programmation, on effectue en général une simulation dite « temporelle » : on utilise les informations de timings fournies par la phase de placement-routage pour vérifier que les signaux se propagent sans erreurs d'un élément à l'autre de la matrice (le cas typique d'erreur : le signal d'horloge arrive après la donnée sur un élément mémoire).

    Coût du flot :
    - flot propriétaire du fournisseur : quelques centaines d'euros
    - coût unitaire d'un FPGA : pour les dernières technos et pour les grosses matrices, commandées en grosse quantité : de 100 à 300 €
    - temps de développement : en général environ 12 mois


    ASIC

    Pour la première phase (description RTL), c'est la même chose que pour le FPGA sauf qu'on doit utiliser des éléments de la bibliothèque du fondeur pour les blocs durs (RAM, par exemple). En effet, ces blocs étant spécifiques à une techno, le fondeur fournit ses propres modèles comportementaux pour ces blocs. Et pour les utiliser, il faut avoir accès à sa bibliothèque, et pour cela, il faut avoir signer un NDA. A mon avis, ce NDA rend impossible la libération du code HDL utilisant les modèles du fondeur.

    Pour la synthèse, il faut utiliser un outil de synthèse ASIC. Ces outils sont plus compliqués à utiliser que ceux pour FPGA (mais on a beaucoup plus de latitudes) et sont plus chers : il faut compter environ 100k€/an (les licenses sont valables pour un temps donné en CAO électronique).

    Pour le placement-routage, cela devient compliqué : les outils sont très chers, et peu de personnes ont les compétences nécessaires pour effectuer ce travail. Cette phase est de plus en plus souvent sous-traiter aux fournisseurs d'outils ou aux fondeurs. Je ne sais pas évalué le prix de cette prestation mais je sais que le forfait journalier est très élevé (prestation de luxe).

    Ensuite, vient le tour du fondeur. Celui-ci crée les masques à partir de la sortie de l'étape précédente. Un masque est la représentation géométrique pour un niveau de la puce. Sur les dernières technos, on compte facilement 40 niveaux de masque. Ce sont ces masques qui coûtent très chers à la fabrication (1 M€ le jeu de masques). Puis, à partir des masques, les puces sont gravées dans les tranches de silicium (wafers).

    Coût du flot :
    - outils : synthèse 100000€/an, P&R : je dirais 100000€ minimum pour cette phase
    - fonderie : 1M€ + cout de production par lot (de quelques dizaines à quelques centaines de k€) -> plus on fabrique de composants, moins le coût unitaire est élevé. Dans le métier, on dit qu'il faut maintenant produire plusieurs millions de composants pour que cela soit rentable de faire un ASIC au lieu d'un FPGA sur les dernières technos.
    - temps de développement : de 18 à 24 mois en général


    Mon avis

    Effectivement, pour un concepteur de circuit numérique, il est plus sympa de faire un ASIC qu'un FPGA (déjà, faire un ASIC, ça fait sérieux, alors que n'importe qui peut programmer un FPGA dans son garage ;-)) mais vu la faible quantité de puces qui seront fabriquées par le projet Open Graphics, il est, àmon avis, suicidaire de partir sur un flot ASIC. Il faut être réaliste : ils ne vendront jamais plusieurs millions de cartes (et donc autant de composants).