Verilog, VHDL, SystemC et tous les HDL en général, permettent de modéliser un système, c'est-à-dire d'en donner un modèle abstrait, en laissant de côté certains détails.

Types de modèles

Suivant le type des détails précisés ou omis, on distingue plusieurs types de modélisation, appelées aussi modèles ou vues :

les vues physiques :
elles spécifient les paramètres physiques d'un système, tels que ses dimensions, les matériaux le constituant. Dans ce type de modèles on décrit les transistors, les masques (polysilicium, dopant N, métal, ...), leur taille, leur épaisseur, ...

Les vues structurelles :
ici on oublie les caractéristiques physiques, on ne voit un système que comme un assemblage de composants. On s'attache donc à décrire les interconnexions entre les différents sous-ensemble, qui peuvent eux-mêmes bien sûr être composés de plusieurs sous-ensembles, qui peuvent eux-même etc... jusqu'au niveau le plus petit, le transistor.

Les vues comportementales :
dans lesquelles un système est décrit en définissant comment ses sorties réagissent en fonction des entrées et du temps. On s'interesse ici à ce qu'un circuit fait, et non à comment il est conçu. On utilise pour cela des descriptions textuelles d'algorithmes, des diagrammes d'état, des fonctions de transfert, ... C'est souvent la vue la plus abstraite.

Pour une bascule D, les différentes représentations seraient, par exemple :

modele physique
modèle physique
modele structurel
modèle structurel
modele fonctionnel
modèle comportemental



Back to Top

Finesse des modèles

Chacun de ces modèles peut être plus ou moins raffiné, selon la finesse des détails qu'on y présente.

  1. Pour une vue physique, les différents niveaux seront :
    1. cartes
    2. composants électroniques
    3. cellules standards
    4. layout
  2. Pour une vue structurelle, les différents niveaux seront :
    1. processeurs, mémoires, bus, ...
    2. registres, ALU, multiplexeurs, ...
    3. portes logiques, bascules, ...
    4. transistors
  3. Pour une vue comportementale, les différents niveaux seront :
    1. algorithmes, diagrammes de flot
    2. transferts entre registres (RTL)
    3. expressions logiques booléennes
    4. fonctions de transfert des transistors

On représente souvent ces trois types de modèles et leur degrés de finesse selon un diagramme dit "en Y" :

Diagramme Y
Diagramme en Y


Back to Top

Utilisation des modèles

Bien sûr, en pratiques, ces différents modèles sont souvent mélangés.
On peut décrire une partie d'un système sous forme physique (j'ai un microprocesseur, dont le boîtier carré de 20mm de côté), une partie en comportemental (l'ALU effectue une addition de tel et tel registre si l'instruction commence par "100", sinon elle en fait la soustraction ), une partie en structurel (le cache est une SRAM, formée de points SRAM, eux-mêmes formés de transistors agencés de telle et telle façon), voire même donner plusieurs modèles d'une même partie.

De plus, la frontière entre les différentes descriptions sont souvent floues (sans compter les abus de langages). Par exemple, une représentation comportementale sous forme d'équation booléenne (S = A XOR B XOR C) suggère une implémentation directe sous forme de portes logiques (ici deux portes XOR). Cette équation peut donc être vue

Les abus de langage font aussi qu'on présente souvent le plus haut niveau d'abstraction d'un système comme comportemental même s'il est structurel. Et bien souvent on parle de RTL à la place de comportemental et vice-versa, alors que le RTL n'est qu'un de ses niveaux de finesse...

Bref, les frontières entre niveaux sont floues, celles entre les modèles aussi. Pour plus de précisions, on pourra se rapporter à [Armstrong] VHDL design : Representation and synthesis.

Quels niveaux pour quels HDL ?

Verilog, VHDL et SystemC permettent de représenter des systèmes sous forme structurelle ou comportementale, dans la majorité des degrés de finesse. Par contre, ils ne savent pas décrire la partie physique.

De plus, les habitudes de travail font que chaque niveau n'est pas conçu par les mêmes personnes, et chaque population a ses propres habitudes. Par exemple, la description de plus haut niveau d'une chaîne de traitement UMTS sera faite par des gens du traitement du signal, qui représentent généralement leurs algorithmes en C ou en Matlab. C'est le niveau du dessous qui sera traité par les électroniciens, qui travailleront alors en Verilog, VHDL ou SystemC.

Le diagramme suivant représente les différents modèles représentés traditionnellement en Verilog, VHDL et SystemC :

Niveaux de modélisation
Diagramme Y Verilog
Verilog
Diagramme Y VHDL
VHDL
diagramme Y SystemC
SystemC


Trois niveaux / modèles sont plus particulièrement utilisés en Verilog :

Ces trois descriptions sont utilisées conjointement, souvent à l'intérieur d'un même fichier, selon la forme la plus simple / pratique pour le concepteur.


Back to Top

Synthèse

Le passage d'une vue à l'autre est appelée synthèse. Il en existe donc deux types :

synthèse physique :
c'est le passage d'une vue stucturelle à une vue physique. On part généralement d'une liste de portes et de leurs interconnexions (netlist) pour aboutir à une description physique du circuit en termes de masques. Cette étape est souvent manuelle, et appelée placement-routage.
synthèse logique :
C'est le passage d'une vue comportementale à une vue structurelle. Elle est souvent automatique, traitée par des logiciels spécialisés et complexes.

En pratique, le terme synthèse est utlisé pour le passage d'une quelconque vue comportementale ou d'une vue structurelle de niveau élevé (registres / ALU /mux et au dessus) à une vue structurelle en portes logiques, c'est-à-dire d'une représentation relativement abstraite, telle qu'elle est utilisée par les concepteurs, à une représentation bas niveau utilisable pour le placement-routage. C'est donc un mélange de synthèse logique et éventuellement de raffinement d'une vue structurelle.

Back to Top

En bref

Il existe trois types de modélisation d'un système :

Chaque type de vue a plusieurs niveaux de raffinement, selon la finesse des détails présentés.

Un circuit est généralement

  1. décrit à un niveau assez abstrait (représentation comportementale et structurelle de niveau élevé),
  2. puis synthétisé pour obtenir une netlist de portes logiques (représentation structurelle à base de cellules standards et transistors),
  3. puis placé-routé pour obtenir les masques du circuit (représentation physique très bas niveau).



Back to Top