TUTORIAL COMPASS V9

1. Introduction
2. Prise en main de l'outil
2.1 Organisation des fichiers et des librairies
2.2 Utilisation de la souris
2.3 Exemple : ouverture de logicAssistant
3. Utilisation de LogicAssistant
4. VÈrification d'un schÈma (Utility Screen)
5. VÈrification temporelle (ChipTime)
6. Simulation logique (QSIM)
6.1 Exemple de fichier de simulation
6.2 Visualisation du rÈsultat de la simulation
7. Outils CellCompiler et DataPath
7.1 CrÈation d'un chemin de donnÈes
7.2 Compilation du chemin de donnÈes
8. SynthËse logique ‡ partir de VHDL (AsicSynthesizer)
8.1 Description VHDL
8.2 Compilation dans logic assistant
8.3 Compilation dans le shell
9. Description d'une machine d'Ètat
9.1 Compilation du diagramme d'Ètat
10. Placement et Routage d'un circuit Standard Cell
10.1 Utilisation de ChipComp
10.2 Extraction de netlist post-vÈrification et post-simulation
11. ANNEXE
11.1 Cahier des charges du jeu

Version 1.1 du 21 août 1997

  1. Introduction

Ce tutorial vous permettra de prendre en main les outils suivants :


Afin d'utiliser les diffÈrents outils de COMPASS nous allons rÈaliser un jeu permettant d'apprendre ‡ compter. La description du jeu est donnÈe en annexe, il n'est pas nÈcessaire de la lire avant de commencer le tutorial. Les blocs seront synthÈtisÈs par les diffÈrents outils de compass, puis simulés.

  1. Prise en main de l'outil

Copiez tous les fichiers du rÈpertoire /usr/local/exemples/compass-tutorial/ sous le répertoire $HOME/compass prÈalablement crÈÈ. Ce rÈpertoire contient alors certains fichiers du tutorial et le fichier de configuration compass.boo qui contient les informations nécessaires à la gestion de Compass (répertoire de travail, librairies technologiques, clés, fenêtres,...).

Compass gère les fichiers de manière non structurée. Il place dans le répertoire de lancement tous les fichiers de la librairie associé à ce répertoire. VÈrifier que le .cshrc ne contient pas une commande cd et placez vous dans le répertoire $HOME/compass avant d'exécuter Compass.

Compass peut être lancé dans deux modes différents :

Mode graphique : compass

Mode textuel : compass -shell

Nous utiliserons pour le tutorial le mode graphique qui nécessite l'environnement XWindows. Le mode textuel est équivalent à l'ouverture d'un terminal! dans l'environnement graphique. Ce mode contient une commande très pratique : ? ou help qui donne la liste des commandes utilisables.

Une Aide on-line est disponible par la commande iview -comp ou compass -help.

L'outil Compass ouvre une fenêtre StatusWindow qui vous donne accËs ‡ tous les outils de Compass. Le milieu de l'écran montre le chemin d'accès (Search Path) aux différentes librairies dans lequel il cherchera les instances à placer et à utiliser. Il s'agit ici de la technologie 0.7 µm du fondeur ES2 ou des librairies FPGA Altera Flex8K ou Xilinx XC4K.



Le menu applications de cette fenÍtre donne accËs aux différents outils graphiques :

  1. Organisation des fichiers et des librairies

Tous les fichiers sont comme des cellules possédant un nom et un type (schéma, netlist, layout,...). Le type de la cellule est en fait l'extension du fichier unix (adder.la <=> [la]adder).

[la] Schéma Logic Assistant

[nls] Netlist de schéma

[nle] Netlist extraite après placement routage

[sim] Fichier de simulation logique

[ly] Layout physique

[pst] Estimation des capacités par floorplan

[cmd] Fichier de simulation temporelle

[trc] Fichier rÈsultant de la simulation logique

[lis] Chemin critique

[lg] Informations sur la netlist

Toutes ces cellules sont stockées dans des librairies. La librairie utilisateur contient les fichiers du design courant. La librairie portable est indépendante de la technologie utilisée et contient toutes les cellules de base pour un design. Il existe d'autres librairies portables pour l'utilisation des fonctions spéciales VHDL, StateMachines, DataPath, etc. Les librairies technologiques dépendent du type de composant utilisé (Standard Cells, Gate Array) et sont utilisées pour obtenir les informations nécessaires à la simulation et au layout.

Le search path est une liste ordonnée de librairies dans lequel Compass recherche les cellules. Il peut être édité mais doit normalement contenir :

librairie de travail : il s'agit de votre répertoire $HOME/compass

la librairie Portable (portabler1)

une librairie technologique (e.g. cb80hd230d, cb80hb230d)

la librairie des PAD (plots d'ES) du circuit (cb80io230d)

la librairie des RAM et ROM statiques et dynamiques

(e.g. cb80rs210d, cb80ra210d, cb80ro210d)

les librairies des différents compilateurs utilisés lors du design (e.g. cb80dp230d ...)

la librairie miscellaneous cmosch00x

  1. Utilisation de la souris

Les boutons de la souris sont définis comme suit :

  1. Exemple : ouverture de logicAssistant

Sélectionner logicAssistant dans le menu applications.

Plusieurs zones apparaissent dans la fenêtre logicAssistant :

La barre de menu

La barre d'icÙnes de commandes qui contient les fonctions de zoom ainsi que certaines commandes d'Èditions

La barre d'Ètat qui indique la position du curseur, les objets sÈlectionnÈs ainsi que la derniËre commande selectionnÈe

  1. Utilisation de LogicAssistant

Nous allons créer le compteur/décompteur 4 bits du projet servant de support au tutorial. Il pourra être réalisé soit en utilisant les différentes méthodes de spécification de fonctions (datapath, schéma à base de portes, machine d'états graphique, VHDL). Nous allons ici le spÈcifier par un schÈma ‡ base de porte logiques élémentaires issues de la bibliothèque de standard cells.

Ouvrez une session logic assistant.

Placement d'une cellule :

Placer ensuite 2 mux 2-to-1 [la]mx21d1 et 2 portes and [la]an02d1

Déplacement et effacement d'une cellule

Choisissez move dans le pop-up (BD). Cliquez BG sur la cellule à déplacer, une croix apparaît. Cliquez do-it (BM) à l'endroit ou vous voulez placer la cellule. La commande delete est d'une utilisation identique

Connexions

La commande wire est utilisée en combinaison avec les boutons mark et do-it. BG permet de placer le début de la connexion et BM fixe la fin du dessin du fil.

Utilisez undo et redo pour annuler ou renouveler les dernières commandes.

Un noeud peut être nommé par la commande change.

Créez la figure suivante puis save all! sous le nom udctr.

On utilisera ce bloc élémentaire pour créer le compteur grâce aux commandes copy et paste du menu edit. Pour cela sélectionnez copy, puis sélectionner un zone autour du schéma avec BG. On choisira ensuite le point de copie en cliquant sur BM. Ce point de copie correspond à la croix qui servira de référence à la commande paste. Sélectionnez ensuite paste puis cliquez sur BG pour faire apparaître un nouvel ensemble de cellules. La commande cut et paste est le seul moyen de déplacer un bloc.

Connecteurs d'E/S

Pour ajouter un connecteur utilisez la commande connector (BD) et cliquez sur l'extrÈmitÈ du fil avec BG. Entrez le nom du connecteur ainsi que son type ( Input, Output, .... ). Il est possible de changer le nom du connecteur avec la commande change.

Bus et breakout

Nous allons ajouter un bus Q de sortie au schéma.

1 - Nommer les noeud un ‡ un : Q[0], Q[1].... Q[3].

2 - Ou utiliser busname (commands -> bus -> busname) : Cliquez sur le fil ‡ reliÈ au MSB du bus avec BG, entrez Q[3:0] dans la boite de dialogue, ce fil est automatiquement nommÈ Q[3]. Cliquez (BG) ensuite sur les autres signaux jusqu'au LSB.

Compléter le schéma du compteur en respectant le nom des connecteurs et sauvegardez le!

Edition de l'icône

La commande file -> new suivie d'un place instance de [la]udctr crée un symbole par défaut du compteur 4 bits. commands -> edit icon permet de changer ce symbole en cliquant dessus. Pour une sauvegarde du symbole utilisez subcell -> save.

Il existe des commandes permettant d'améliorer le dessin de l'icône : line, circle, fill, etc.

Il est inutile de sauver ce nouveau schéma car il correspond à un placement du compteur dans un schéma de hiérarchie supérieure.

Il est possible de visualiser un schÈma de niveau infÈrieur du compteur avec subcell -> push.

  1. Vérification d'un schéma (Utility Screen)

On utilise pour cela le screener qui vérifie une netlist portable issue d'un schéma ou d'une synthèse. Pour créer, si elle n'existe pas, cette netlist [nls]udctr il faut exécuter la commande file ->output -> netlist! de logic assistant après avoir charger le schéma [la]udctr.

On ouvre ensuite une session terminal (menu applications de la statusWindow) afin de faire apparaître une fenÍtre shell avec le prompt COMPASS>. Tapez utility screen pour invoquer le programme.

open [nls]udctr

screen

Pour visualiser les erreurs éventuelles ouvrez une fenêtre TextEditor (menu applications) puis open [scr]udctr. Corrigez les erreurs du schéma (les erreurs concernant les "primary signals should go thru I/O buffers" sont normales à ce niveau de hiérarchie).

Le screener permet également d'obtenir des informations (taille, nombre de portes, consommation, etc.) sur n'importe quelle netlist Compass [nls]xxxx. On pourra l'utiliser par exemple pour vérifier la cohérence de la netlist du circuit complet.

  1. Vérification temporelle (ChipTime)

On utilise pour cela l'outil ChipTime qui permet une analyse statique temporelle des systèmes synchrones. Il vérifie les violations de setup/hold, donne le chemin critique du circuit ou le temps de n'importe quel chemin, et indique les éventuels décalage d'horloge (skew).

Ouvrez une session terminal et tapez ChipTime pour invoquer le programme.

open [nls]udctr # chargement de la netlist

set clock clk -period 100 # dÈfinition de clk ( pÈriode = 100ns)

set omitpath -thru rstb # Èvite de trouver le chemin critique

#sur le reset asynchrone

report skew # fournit le skew dans le pire des cas

report path # recherche le chemin le plus critique et l'affiche

report timing -allPaths

Toutes les commandes exécutées dans un shell peuvent Ítre regroupées dans un fichier [cmd] et chargées dans l'outil par la commande open (le fichier [cmd]udctr pour l'analyse temporelle du compteur vous est fourni).

  1. Simulation logique (QSIM)

On utilise l'outil QSIM qui permet une analyse dynamique temporelle. Ouvrez une session terminal et invoquez QSIM. Les commandes de simulation sont regroupées dans un fichier [sim] et chargées dans le simulateur par la commande open (le fichier [sim]udctr - voir ci-dessous - pour la simulation de [nls]udctr vous est fournit). AprËs chaque lancement de simulation, il est conseillÈ d'utiliser la commande quit qui permet de fermer tous les fichiers ouverts lors de la simulation.

  1. Exemple de fichier de simulation :

load [nls]udctr # chargement de la netlist Compass a simuler




watch (display) clk rstb ud # definition de la liste des E/S

watch (display) ceb Q # a visualiser

set radix 16 Q # Q : affichÈ en hexadÈcimal

output sim_udctr # ouvre le fichier [trc]compteur

# ( rÈsultat de la simulation, utilisable par PostSim 2)

trace (tabular) # static / dynamique / tabular : format du fichier [trc]

wave udctr # creation de fichiers [wft] et [wfd] utilisable par PostSim2

set clock clk 0(50) 1(50) # defintion de l'horloge a T=100ns


h rstb # positionne rstb a 1

h ud ceb

cycle # lance la simulation pour 1 cycle d'horloge

l rstb # positionne rstb a 1

cycle

h rstb

cycle 8 # lance la simulation pour 8 cycles d'horloge

l ceb

cycle 2

h ceb

cycle 2

l ud

cycle 5

l rstb

cycle

h rstb


cycle 5


Remarques:

  1. Visualisation du rÈsultat de la simulation

Ouvrez l'outil PostSim2 (menu applications) puis faites un load du fichier [trc] pour visualiser graphiquement les résultats de simulation.

  1. Outils CellCompiler et DataPath

Les outils cell compiler et data-path compiler permettent de définir des structures optimisées de layout sous une autre forme que des cellules standard.

Le cell compiler permet de compiler des multiplieurs, ROM et RAM optimisés sous forme de blocs durs directement implantables dans le circuit. Un fichier [tpl] (template) est utilisé pour générer une cellule paramétrée. La compilation crée une cellule [pcl] (parameter cell). Les compilations sont effectuées directement dans le logic assistant par compile -> simulation, après avoir paramétrée la cellule, par commands -> pcl -> set.

Le data path (chemin de données) est une structure logique opérant sur une donnée multi-bits. Le problème sera décrit sur un seul bit, puis le compilateur étendra la description au nombre de bits désirés. Ce compilateur peut générer :

- soit un bloc dur de layout optimisé utilisable dans l'ASIC

- soit une netlist portable en standard cell ou gate array à placer/router.


La hauteur du Data Path dépend du nombre de bits de la fonction à réaliser

La longueur du Data Path dépend du type et du nombre de blocs fonctionnels réalisant cette fonction

  1. Création d'un chemin de données

Dans une session logic assistant vous saisissez le schéma suivant en utilisant les symboles de la librairie data path ( place instance -> cb80dp230d -> logicAssistant ). Placez le cartouche TitleBlock, on peut changer la largeur du chemin de données en modifiant les attributs de ce cartouche par la commande attribute (menu Pop-Pup). Le schéma sera sauvé sous add_comp_dp_spec. Les latchs sont des D-flip-flop avec contrôle de chargement, iscorrect est un comparator -> all 0's detector et les horloges sont des Non-inverting Clock Buffer.

  1. Compilation du chemin de données
Ouvrez une nouvelle session logicAssitant (file -> new). Placez un [tpl] template for D.P. Compiler (librairie cb80dp230d), entrez dans la textBox le nom add_comp_dp_icon. Ensuite, une fenêtre pcl apparaît dans laquelle on fixe les paramètres et on relie ce symbole au data path ci dessus avec les options suivantes:

DP_specification :add_comp_dp_spec,

Output_Test_Format : QSIM

Layout_Option : Optimized

Cela crée un icône (cf.. figure droite) et fait du nom choisi un fichier [la]add_comp_dp_icon que l'on pourra utiliser dans le schéma global du projet par la commande place.

La compilation s'effectue par commands -> compile -> simulation. Si une erreur subsiste dans le schéma, le placement n'aura pas eu lieu.

  1. Synthèse logique à partir de VHDL (AsicSynthesizer)
  2. Description VHDL

Le fichier suivant représente la description comportementale [vhd]compteur d'un compteur 4 bits. Le reset est asynchrone, tandis que load et up/down sont synchrones. On se référera au manuel Asic Synthesizer for VHDL Design pour les problèmes de syntaxe.



library IEEE;



use IEEE.STD_LOGIC_1164.ALL;




library COMPASS_LIB;


use COMPASS_LIB.COMPASS.ALL;


entity compteur is

port ( reset : in Std_Logic;

clk : in Std_Logic;

up : in Std_Logic;

load : in Std_Logic;

val : in Std_Logic_Vector(3 downto 0);

count : buffer Std_Logic_Vector(3 downto 0) );

end compteur;

architecture comportementale of compteur is

begin

synchrone : process(reset,clk)

begin

if reset='1' then

count <= "0000";

elsif clk'event and clk='1' then

if load = '1' then

count <= val;

elsif up = '1' then

count <= count + "0001";

else

count <= count - "0001";

end if;

end if;

end process;


end comportementale ;


  1. Compilation dans logic assistant
Dans une autre session logic assistant faire un place instance de [vhd]compteur, selectionnez ASIC Synthetiser.

Entrez dans la textBox le nom compteur_icon. Cela crée un icône (cf.. figure droite) et fait du nom choisi (compteur_icon) un fichier [la]compteur_icon que l'on pourra utiliser dans le schéma global du projet.

La compilation s'effectue par commands -> compile -> simulation. Si une erreur subsiste dans le fichier VHDL, la compilation n'aura pas eu lieu, les messages d'erreurs se situant dans la zone de dialogue.

Il est possible de visualiser la netlist compilée en générant le schéma [la]compteur_icon_p_mksc, grâce à la commande open [nls]compteur_icon_p de logicAssistant. On peut également analyser cette netlist (surface, temps) grâce aux outils utility screen et ChipTime, QSIM... (cf §4 , §5 et §6).

Si vous apportez des modifications au fichier [vhd] il suffit de compiler l'icÙne pour mettre ‡ jour la netlist.

Le compteur 4 bits synthétisé est le suivant :

  1. Compilation dans le shell

Il est aussi possible de compiler un fichier [vhd] ‡ partir d'une fenÍtre terminal. L'avantage est de pouvoir controler les options d'optimisation . Tapez ASICsyn pour invoquer le programme.

COMPASS> ASICsyn

COMPASSAsicSyn>

open [vhd]compteur charge un [pcl], [cmd], [nls] ou un [vhd] existant

synthesize synthËse : convertion du vhdl en Èquations logiques set options d'optimisations : tapez set ? pour l'aide.

optimize optimisation de la netlist sur la bibliothËque portable

write écriture de la netlist optimisée [nls]compteur_p

exit/quit sort de l'outil Asic Synthesizer et écriture du fichier [nls]compteur_p

  1. Description d'une machine d'état

Compass intègre la possibilité de compilation spécifique aux machines d'état. Une FSM (Finite State Machine), qu'elle soit de type Moore ou de type Mealy, peut être décrite :

- soit par un fichier VHDL en utilisant ASIC Synthetiser,

- soit par un diagramme d'état sous forme de dessin en utilisant les macros de la librairie state diagram dans AsicSyn ( le fichier [la]machine vous est fourni).

Les actions d'un Ètat ainsi que les transitions sont dÈfinies par la commande attribute. L'exemple ci-dessous nous montre la fenÍtre attributes de l'Ètat compte dont les actions sont enable=1 et updown=1. Les autres sorties prendront leur valeur par dÈfaut.



  1. Compilation du diagramme d'état

Dans une autre session logic assistant, il faudra créer un [pcl] en plaçant [tpl] Logic Synthetiser template ( librairie AsicSyn ) dont le nom est celui de l'icÙne : machine_icon (cf.. figure droite). Ce template se trouve dans la librairie asicsyn.

Une fenêtre pcl apparaît dans laquelle on fixe le format de sortie : QSIM et on relie ce symbole au fichier [la] ci dessus (cell_name : [la]machine).

La compilation s'effectue par commands -> compile -> simulation. Si une erreur subsiste dans la spécification, le placement n'aura pas eu lieu.

Simulez la machine d'Ètat avec le fichier de simulation [sim]machine.

On peut utiliser directement une description VHDL reprenant la syntaxe suivante :

ENTITY machine IS

PORT(

clk : IN Std_Logic;

resetb : IN Std_Logic;

valid : IN Std_Logic;

cancel : IN Std_Logic;

correct : IN Std_Logic;

affich : OUT Std_Logic;

latcha : OUT Std_Logic;

latchb : OUT Std_Logic;

latchans : OUT Std_Logic;

enable : OUT Std_Logic;

updown : OUT Std_Logic

);

END machine;

ARCHITECTURE comportementale OF machine IS

TYPE STATEtype IS

(repos, compte, affiche, effaceb, memob, memoans, calcul, interb, effacea, memoa, intera, decompte);

SIGNAL currentState, nextState : STATEtype;

BEGIN

synch : PROCESS(clk, resetb)

BEGIN

IF resetb = '0' THEN

currentState <= repos;

ELSIF Rising_Edge(clk) THEN

currentState <= nextState;

END IF;

END PROCESS;

comb : PROCESS(currentState, valid, cancel, correct)

BEGIN

CASE currentState IS

WHEN repos =>

affich <= '1';

latcha <= '0';

latchb <= '0';

latchans <= '0';

enable <= '0';

updown <= '0';

IF valid = '1' THEN

nextState <= memoa;

ELSE

nextState <= repos;

END IF;

WHEN memoa =>

affich <= '0';

latcha <= '1';

latchb <= '0';

latchans <= '0';

enable <= '0';

updown <= '0';

IF dvalid = '0' THEN

nextState <= intera;

ELSE

nextState <= memoa;

END IF;

WHEN compte => ...

WHEN effaceb => ...

WHEN memob => ...

WHEN memoans => ...

WHEN calcul => ...

WHEN interb => ...

WHEN effacea => ...

WHEN intera => ...

WHEN decompte =>

affich <= '0';

latcha <= '0';

latchb <= '0';

latchans <= '0';

enable <= '1';

updown <= '0';

nextState <= affiche;

WHEN OTHERS =>

affich <= 'X';

latcha <= 'X';

latchb <= 'X';

latchans <= 'X';

enable <= 'X';

updown <= 'X';

nextState <= currentState;

END CASE;

END PROCESS;

END comportementale;

  1. Placement et Routage d'un circuit Standard Cell

Editez le schéma global du projet, puis effectuer la compilation physique des blocs compilÈs (Datapath, Rom, ...). Placez [vhd]comp_to_bin qui vous est fourni et compilez le.


Placez ensuite les plots d'entrée/sortie en utilisant la bibliothèque portabler1->Logic Assistant->pads/input buffers. Les noms des diffÈrents pads sont indiquÈs sur le schÈma suivant :

Remarque : pour les bus, il faut modifier la cardinalitÈ des Pads par la commande Change.

Sauvegarder ce schÈma sous le nom [la]toplevel. Il est fortement recommandé de passer cette netlist au screener (cf. chapitre 4), puis de la simuler pour avoir une référence pour la simulation post-routage.

  1. Utilisation de ChipComp

Ouvrir une session chipComp. Ensuite on fera un open de [nls]toplevel.

FPR -> Create Floor Plan -> Physical FP : permet d'effectuer le plan de masse.

seeds->seeds external : permet d'imposer le brochage des pads (alimentation par ex.)

seeds->set net width : permet de fixer la largeur de métal de certains signaux (Vdd, Vss par ex.)

seeds->set net weight : permet de mettre un poids de routage sur certains signaux (clock par ex.)

compileChip : placement routage global : placement des cellules (PlaceCell, Place Improve), routage des cellules (RouteCell), routage complet (RouteBLock). Il est possible de paramËtrer chaque Ètape ( cf. aide ). Ces commande peuvent Ítre exÈcutÈes une ‡ une dans le menu FPR.

Setup -> View -> CellName : pour visualiser le nom des cellules.

Pour cette étape de placement-routage, il est bien sur vivement recommandé de consulter la documentation compass. Le placement routage crée un fichier [doc] qui contient les informations de surface. On notera qu'il arrive fréquemment que l'outil génère des " unrouted ". C'est à dire des noeud qu'il n'arrive pas à router sur le layout. On est dans ce cas obligé de les router à la main en utilisant l'outil compose. VÈrifier dans le fichier [doc] que le nombre de " unrouted " est 0.


Sauvegardez le circuit dans un format ly ( File-> Output ->Physical : cliquez sur les deux 'ly').

  1. Extraction de netlist post-vérification et post-simulation

Il faut lancer un terminal , puis extract pour crÈer une netlist [nle].

input [ly]projet (ou [cp] ou [ly])

output [nle]projet nom de la netlist extraite

extract extraction de netlist

Les outils suivants de post-vérification sont DRC qui permet de vérifier les dessins de masques avant l'envoi en fonderie et netCompare qui effectue une comparaison entre la [nls] et la [nle].

La post-simulation s'effectue comme une simulation classique sous qsim dans laquelle on charge la [nle] à la place de la [nls]. Attention seul l'accès aux pads est possible! Il faut dÈclarer les vecteur dans le fichier [sim] ( ex : vector data[4 :0] ).

  1. ANNEXE 
  2. Cahier des charges du jeu

Le but est de rÈaliser un jeu permettant d'apprendre ‡ compter. L'utilisateur entre tour ‡ tour un nombre A, un nombre B, et propose un nombre S, somme de A et B. Les nombres A et B sont non signÈs, codÈs sur 4 bits, tandis que S sera Èvidemment codÈ sur 5 bits. Un bouton VALID permet d'indiquer que la valeur est ‡ lire, un bouton CANCEL permet d'annuler le dernier chiffre (A et B) entrÈ.

AprËs que l'utilisateur est validÈ les 3 valeurs, le rÈsultat sera affichÈ. La machine allume alors une LED si la rÈponse est correcte et incrÈmentÈ un compteur de bonne rÈponse. Dans le cas contraire, le compteur est dÈcrÈmentÈ. Avant que la rÈponse S ne soit rentrÈe par l'utilisateur, les sortie pilotant la LED et l'afficheur du rÈsultat sont en haute impÈdance.

La sortie du compteur doit Ítre faite en binaire signÈ (3 bits de donnÈe, 1 bit de signe). On dispose d'une horloge rapide et d'un reset gÈnÈral asynchrone).