Le Filtre médian résultats commentés

Cette page contient  les résultats obtenues par  différents étudiants,  ainsi que les erreurs de codages relevées dans les sources.

Note but est :

  • D'expliquer les paramètres mesurés pour la vérification du code écrit par les étudiants.
  • De permettre à chacun de comprendre les défaut de son propre code.
  • De permettre aux futurs inscrits dans SE204 de ne pas renouveler ces erreurs.

Simulation MCE : pas de problème

Synthèse MCE : attention à la taille du module synthétisé : 24 cellules et non pas 32 (si 32 trouvez pourquoi)

Simulation MED : pas de problème

Style de codage :

  • Ne pas utiliser de code structurel (un module pour un multiplexeur, un module pour un registre...) : tout MED tient dans un seul processus synchrone "always"....
  • Ne pas travailler par recopie de code (R1
  • Paramétrer tout ce qui peut l'être dans la mesure du possible.
  • Pas d'utilisation du signal RESET dans une fonction combinatoire, on n'initialise que les registres pas les équation booléennes...

MEDIAN simu Boggart: pas de probème si ce n'est une mauvaise archi...

MEDIAN syn+ simu Boggart:  Double test, synthèse puis simulation de Boggart. Evidemment, si la synthèse échoue, la simulation aussi.

  • Ne pas utiliser un processus "initial" pour donner des valeurs initiales à un signal dans un module destiné à la synthèse. Dans le matériel, le temps "Zero" n'existe pas, seule une affectation explicite d'un registre sur action d'un signal de "reset' permet d'initialiser une valeur.
  • De même pas de déclaration de signal de type "logic toto = 0" dans un module destiné à la synthèse; Cela n'initialise rien du tout dans le matériel....
  • Pas de logique sur l'horloge : on ne manipule que les données données entrantes des registres pour décider de leur nouvelle valeur après le front d'horloge.
  • Les processus synchrones avec  RESET asynchrone doivent être écris de façon "simple" et systématique, en indiquant de manière non équivoque que le reset est bien prioritaire sur tout autre signal. On ne peut écrire que des choses du type :
    • always @(posedge CLK or posedge RESET) if (RESET) blabla1 else blalbla2 et en aucun cas 
    • if (RESET || I=5 &&...) : le synthétiseur ne peut associer à cela des flipflops avec reset asynchrone...
  • Ce type de construction, bien qu'aboutissant à des simulations correctes est faux car il ne correspond pas à des structures matérielles synthétisables correctement:
    • CODE NON SYNTHETISABLE : always @(posedge CLK or negedge _RST or negedge DSI)

MEDIAN syn cells : Taille (en logic cells) du code synthétisé: vous remarquez une extrème variabilité de taille, une taille supérieure à 150 doit imposer une relecture attentive du code. (1000 signifie, non synthétisable) les raisons possibles sont les suivantes:

  • Tous les Warnings de synthèse n'ont pas été analysés et traités en conséquence. Tout warning éléminé est une chance de plus d'obtenir une synthèse conforme à l'idée que vous vous en faisez.
  • Registres de données inutilement dupliqués : estimez vous même le nombre de registres nécessaires et vérifiez dans les résultats de synthèse.
  • Compteurs déclarés en "int" (32 bits) et utilisés d'une manière ne permettant pas au synthétiseur de réduire le nombre de bits au strict nécessaire:  déclarez les variables et constantes en utilisant l'indicateur de taille le plus souvent possible. (logic [12:0] , plutôt que int..)

MEDIAN freq : Fréquence de fonctionnement du filtre. ras, il faudrait analyser la différence entre les implémentations à "70 Mhz" et celles à "130 Mhz".

MEDIAN qual : Un critère de qualité calculé à partir du rapport "Fréquence/Cells", uniquement valable pour ceux qui fonctionnent.

MEDIAN sans latch:

  • Traquez les "latchs' : c'est le signe de processus combinatoires mal écrits, avec pour conséquence, augmentation de taille, diminution de performance et éventuellement non conformité à la simulation.

 

 

Résulats des années précédentes:

2011/2012 P1

 

Nombre d'instances frequence maximale
75 266,951
69 261,78
80 278,629
61 146,972
242 85,121
91 257,533
86 263,783
152 164,447
56 288,434
80 235,349
69 268,745
59 253,614
65 215,517
83 253,614
56 286,369
80 261,097

2011/2012 P2

Nombre d'instances frequence maximale 
300 166,583
92 288,434
93 118,68
80 278,629
132 224,215
91 228,728
78 266,951
94 184,196
79 228,728
149 189,502
568 84,338
75 266,951
68 286,369
84 270,783

2013/2014 P1

Nombre d'instances frequence maximale 
93 227
117 158
113 241
68 266
1000 0
64 317
456 145
70 227
78 286
71 240
93 227
71 266
86 236
75 286
1000 0
65 266
72 235
1000 0
1000 10
78 278
98 204
85 164

2013/2014 P2

Nombre d'instances frequence maximale 
62 229
102 295
119 173
89 264
81 269
129 297
141 275
97 224

2014/2015 P1

Nombre d'instances frequence maximale 
100 255
293 157
1000 1
231 189
1000 1
52 286
1000 1
189 172
142 182
44 340
74 266
1000 1
1000 1
178 186
115 299
165 170
73 226
70 269
231 157

 

2014/2015 P1

Nombre d'instances frequence maximale 
113 227
68 235
1000 1
68 235
114 190
1000 1
94 267
200 120