• [^] # Re: Tout l'inverse du soft !

    Posté par (site web personnel) . En réponse à la dépêche Sortie de Chisel 3, un langage de description matériel basé sur Scala. Évalué à 8.

    Les concepts synchrone/asynchrone dans le monde hardware n'ont rien à voir avec le monde du software.
    On est ici dans le monde HW et il faut donc penser en terme de HW et non SW.
    Je vais essayer de donner quelques clés sans entrer trop dans les détails.

    Quand on parle de systèmes synchrones en HDL, on parle de design qui sont "sensibles" à une (ou plusieurs) horloges. Cela veut dire que l'état des sorties du système vont changer après un front (en général montant) de l'horloge. Le reste du temps les sorties sont stables (sinon on a un problème ;-) ).
    Ceci est très vrai pour les circuits programmables type FPGA. Les FPGA sont des circuits avec une structure bien particulière, basée sur des blocs élémentaires très simples composés: d'une LUT (Look-Up Table => table de vérité), d'un inverseur, d'un multiplexeur et d'une bascule D (mémoire synchrone 1 bit). Cette structure très simple est la force des FPGA parce qu'il est plus facile de produire un circuit intégrer graver très finement (28nm pour les CycloneV Alera) avec une structure répétitive qu'un circuit avec une structure plus complexe (tels que les CPLD).

    La conception d'un design FPGA passe par plusieurs phases:
    1. la description du design à l'aide d'un langage HDL
    2. la synthèse du design qui consiste à extraire de la description une "netlist" qui correspond à l'interconnexion des éléments HW (bascules, inverseurs, multiplieurs, etc.)
    3. Le placement/routage ou l'on va tenter de placer les éléments de la netlist dans le FPGA
    4. L'analyse de timing, qui est une étape essentielle qui consiste à s'assurer que les contraintes de temps seront respectées par le design générer.

    Le point dur d'un design est en général l'étape 4, en effet pour que le design soit stable, il faut que les bascules D soit toutes bien utilisées. Il faut que le signal soit présent à l'entré de la bascule un certain temps avant le front actif de l'horloge (setup time) et reste stable un certain temps après le front actif (hold time). Et ceci pour toutes les bascules D utilisées par le design.

    J'espère ne pas avoir été trop brouillon dans mes tentatives d'explication.