License d'utilisation de ce document :
Cette partie du cours porte sur les HDL en général, quels qu'ils soient. Elle présente les aspects communs à tous les HDL, les principes de base, ainsi que les mécanisme de la simulation événementielle.
Il est nécessaire d'avoir lu et compris cette partie avant de passer à l'étude d'un HDL en particulier.
Cette partie structurée en chapitre, à lire dans l'ordre :
Jadis, les outils informatiques n’étant ni aussi
puissants ni aussi
répandus qu’aujourd’hui, la conception
de circuits intégrés était
un métier manuel.
On dessinait les composants (transistors) à la
main, sur un papier spécial (Mylar) avec des crayons de
couleur. C’est
ce qu’on appelle le dessin au micron.
Une telle technique limitait naturellement la complexité des dispositifs conçus. La complexité était également limitée par les performances de la technologie disponible chez les “fondeurs” (ceux qui fabriquent véritablement le dispositif).
Tout était donc pour le mieux dans le meilleur des mondes possibles, ou presque. A cette époque le concepteur manipulait des objets élémentaires qui étaient des surfaces rectangulaires de couleur. Un transistor était constitué de l’assemblage d’une dizaine de ces rectangles (25 rectangles pour l’inverseur CMOS ci-dessous).
Dessin au micron d'un inverseur CMOS
Lorsque la technologie a évolué suffisamment pour offrir des ordinateurs puissants et des technologies permettant d’intégrer un grand nombre de transistors sur la même puce il a fallu - et on a pu - envisager de nouvelles méthodes de travail.
Les langages de description de matériel (HDL) ont ainsi fait leur apparition. Ils avaient pour but de modéliser, donc de simuler, mais aussi de concevoir. Des outils informatiques (placeurs-routeurs) permettant de traduire automatiquement une description textuelle en dessins de transistors (dessins au micron) ont fait leur apparition.
Les principes de cette évolution-révolution sont assez simples :
Le concepteur est donc déchargé d’une partie importante du travail. Il aborde les problèmes à un niveau d’abstraction plus élevé. Il manipule des objets élémentaires de l’ordre de la dizaine de transistors : les portes logiques. Un exemple de description textuelle est présenté ci-dessous :
Exemple de
description textuelle
Une pseudo-révolution modifie encore le métier de concepteur de circuits intégrés : l’apparition des interfaces graphiques et donc des éditeurs de schémas. La description textuelle est remplacée par une description schématique.
Description schématique du même circuit
Il est important de
comprendre en quoi cette modification, en apparence fondamentale,
n’est
en fait que superficielle. Les anciens outils informatiques restent
inchangés, à ceci
près qu’on leur adjoint un traducteur automatique
de description
schématique en description textuelle.
La seule réelle modification est d’ordre
ergonomique : il est
en général beaucoup plus facile de lire et de
comprendre un schéma
qu’une description textuelle.
Les deux exemples ci-dessus montrent l’équivalence entre les deux types de représentation. On imagine aisément comment passer de la forme schématique à la forme textuelle. On comprend aisément aussi pourquoi les informations supplémentaires contenues dans la première (symboles des portes, position relative et orientation des portes, taille et couleur des objets, polices de caractère utilisées, etc.) ne sont utiles qu’au seul concepteur humain. Les outils informatiques n’en ont pas l’usage.
Certaines propriétés “intéressantes” des langages textuels de description de matériel méritent d’être notées :
Les langages fonctionnels (ou comportementaux) de description de matériel, grâce aux nouvelles possibilités de description à un niveau d’abstraction plus élevé, ont répondu à des besoins fondamentaux des concepteurs de circuits intégrés :
La complexité des circuits conçus augmente toujours. On conçoit aujourd’hui des circuits composés de l’assemblage de plusieurs millions de portes. On a donc tiré encore une fois parti de l’augmentation de puissance des ordinateurs et des progrès réalisés en informatique pour imaginer des outils logiciels encore plus puissants : les synthétiseurs logiques.
Il s’agit de décharger les concepteurs d’une tâche de plus, afin de leur permettre de travailler à un niveau d’abstraction encore plus élevé, de manipuler des objets élémentaires encore plus grands. Pour ce faire, la description structurelle ne suffit plus. En effet, le nombre de primitives utilisables ne doit pas dépasser quelques centaines ; au delà, le concepteur ne peut plus mémoriser le contenu des bibliothèques et donc ne parvient pas à en tirer le meilleur parti.
Pour aller encore plus loin, il faut permettre au concepteur de décrire le “quoi” au lieu du “comment”. Il doit pouvoir s’affranchir de la connaissance des primitives disponibles. Le dispositif à modéliser ou à concevoir sera désormais représenté par sa fonction et non plus par sa structure. C’est le synthétiseur logique qui déterminera la structure automatiquement à partir de la fonction. Bien sûr, les possibilités de description structurelle existent toujours mais on leur associe d’autres possibilités afin d’augmenter l’efficacité de l’ensemble.
Description fonctionnelle (comportementale) du même circuit
Les langages fonctionnels (on dit aussi comportementaux) de description de matériel possèdent des avantages certains sur les langages structurels en terme de portabilité, maintenabilité et versatilité :
Il est important de comprendre la nature des différentes utilisations que l’on peut faire des langages fonctionnels de description de matériel.
En tout premier lieu vient la modélisation. Elle n’a pas pour fonction de décrire la structure de l’objet mais son comportement. Celui qui écrit le modèle peut recourir à la description structurelle pour se simplifier la tâche en découpant le problème en sous-problèmes plus simples à modéliser, mais le découpage ainsi obtenu n’a aucune raison à priori de correspondre au partitionnement qui sera effectivement utilisé lors de la conception de l’objet. Le but de la modélisation, c’est la simulation. Ce qui compte avant tout, c’est la fidélité - un modèle se doit d’être aussi précis que possible dans son champ d’application - et l’efficacité - le modèle doit pouvoir être simulé le plus rapidement possible et doit être portable, réutilisable et facile à maintenir.
Pour simuler un modèle, il faut disposer du modèle, bien sûr, mais aussi de stimuli, c’est à dire de la description des signaux d’entrée du modèle au cours du temps. Jadis, avec les langages structurels, il n’était pas possible de décrire les modèles et les stimuli d’entrée à partir du même langage. Il fallait donc utiliser plusieurs langages, plusieurs outils et c’était autant de risques d’erreurs et de coups portés à la portabilité.
Grâce aux possibilités de description fonctionnelle des nouveaux langages, on utilise désormais le même formalisme pour ces deux opérations pourtant bien différentes. La description de stimuli est une deuxième utilisation importante de ces langages.
Le résultat d’une simulation n’est pas toujours évident à vérifier. La seule inspection visuelle ne suffit pas dans les cas complexes où le nombre de données à analyser est grand, ou encore lorsque les calculs à effectuer pour valider un résultat sont trop complexes. Là encore, les langages fonctionnels de description de matériel permettent de simplifier cette tâche en analysant automatiquement les résultats en cours de simulation.
Un environnement de simulation complet comprend donc un générateur de stimuli, un modèle de l’objet à simuler et un vérificateur automatique des résultats. Ces trois composantes sont modélisées à l’aide du même langage. Le gain en simplicité de mise en œuvre et en portabilité de l’ensemble est considérable.
Les langages fonctionnels de description de matériel servent aussi - et c’est sans doute là l’une de leurs fonctions premières - à concevoir. Il ne s’agit plus de modéliser en vue de la simulation, mais de décrire les objets qui seront véritablement fabriqués.
La totalité du langage ne peut plus être utilisée. Il est nécessaire de prendre en considération les limites des outils logiciels qui assureront la traduction du code en portes logiques (synthétiseurs) puis la traduction de la description structurelle en dessin au micron (placeurs-routeurs).
Si les considérations de vitesse d’exécution en simulation existent toujours (la description sera simulée avant d’alimenter le synthétiseur, afin de vérifier que la fonction décrite est bien la fonction désirée) elles ne sont plus prioritaires. Ce qui compte le plus désormais, c’est l’efficacité du code au sens du synthétiseur. En effet, pour que ce dernier produise la description structurelle la plus économique possible (et donc la surface de silicium la plus petite possible), il faut que le concepteur ait tenu compte de ses limites et de ses spécificités qui ne vont souvent pas dans le sens de l’efficacité en simulation.